kettle hiveから乱数を取る-問題解決方法(書き換え駆動をダウンロード可能)


目次
関連資料:
実装手順:
リソースのダウンロード:
ブロガーがkettleを初めて使用してhiveのデータを抽出したとき、取数結果が文字化されないという問題に遭遇しました.
関連資料を調べた結果、大体以下のいくつかの解決方法がある.
hive接続ページ設定characterEncoing=utf 8.リレーショナル・データベースでは役に立つかもしれませんが、hiveテストでは無効です.
hive接続ドライバのjarパッケージを変更します.

関連資料:


まずkettleがhiveのjdbc接続をどのように使用しているかを見てみましょう.
テストにより、lib下、{kettle_home}data-integrationpluginspentaho-big-data-pluginlib下にhiveのjdbcのjarパッケージを加えると、接続機能に異常が生じる.このディレクトリの下にjarファイルhive-jdbc-0.7.0-pentaho-1.0.2が存在する.JAr,このクラスは適合クラスであり,hiveのjdbc接続を実際に実現しない.反射的にclasspathの下にあるhivejdbcクラス、すなわち{kettlehome}pluginspentaho-big-data-pluginhadoop-configurationshadoop-20libhive-jdbc-0.7.0-pentaho-1.0.2.jarというjarファイルで、実際にhiveを呼び出すために使用されます.
ネット上で資料を調べると、まず以下のurlからsourceファイルを取得することができます.http://repo.pentaho.org/artifactory/repo/org/apache/hive/hive-jdbc/0.7.0-pentaho-1.0.2/hive-jdbc-0.7.0-pentaho-1.0.2-sources.jarダウンロードして解凍した後、自分の新しいjavaプロジェクトにインポートし、関連するクラスライブラリを導入して、正常にコンパイルすることができます.
しかし、実際にはこのsourceファイルは見つかりません.検索エンジン全体を調べても関連するjarパッケージは見つかりませんでした.そのため、スレ主はjarパッケージを逆コンパイルしました-』を再コンパイルしました.

実装手順:


ツール:逆コンパイルツールjd-gui、java IDEツールEclipse
私の実装手順は次のとおりです.
  • hive-jdbc-0.7.0-pentaho-1.0.2.jarというjarパッケージは、classファイルをディレクトリに解凍します.
  • jd-gui反コンパイルclassファイルをjavaソースファイルとして使用し、保存する.
  • javaプロジェクトを新規作成し、javaソースファイルをプロジェクトにインポートします.
  • hive-jdbc-0.7.0-pentaho-1.0.2.jarというファイル名は推測できるが、駆動はhive 0を対象としている.7.0を修正するhive,hadoop 0を導入する.20の関連jarパッケージ、jdkは1.5を使用してコンパイルされます.
  • 誤りを報告するコードを修正する--逆コンパイルのコードは必ずしも正しいとは限らず、一定の文法誤りがある.
  • HiveQueryResultSet.を修正JAvaは、
    StructObjectInspector soi = (StructObjectInspector) serde.getObjectInspector();
    List fieldRefs = soi.getAllStructFieldRefs();
    //Object data = serde.deserialize(new BytesWritable(rowStr.getBytes()));// 
    Object data = serde.deserialize(new BytesWritable(rowStr.getBytes("UTF-8")));// 
    
  • のコードです.
  • 元のパッケージのHiveQueryResultSetを置き換える.classファイルは、すべてのclassファイルを元の構造でjarパッケージとして打つ.
  • 元のパスのjarパケットを置き換えるといいです.

  • リソースのダウンロード:


    スレ主が変更したjarパッケージリソースはここにあります.
    http://download.csdn.net/detail/l714417743/9369816