0

CDH3 から CDH4 に移行しており、この移行の一環として、CDH3 にあるすべてのジョブを移動しています。これには重大な問題が 1 つあります。ワークフローが oozie を介して実行され、内部でハイブ クエリ (hive -e {query}) を呼び出す python スクリプトを実行すると、このハイブ クエリで add を使用してカスタム jar を追加します。 jar {LOCAL PATH FOR JAR}、およびカスタム udf の一時関数を作成しました。そして、ここまでは大丈夫のようです。しかし、クエリがカスタム udf 機能で実行を開始すると、分散キャッシュで失敗し、ローカル パスではなく HDFS パスで jar を探しているファイルが見つからないという例外が発生します。

ここで設定が欠落しているかどうかはわかりません。

例外トレース:

警告: org.apache.hadoop.metrics.jvm.EventCounter は非推奨です。すべての log4j.properties ファイルで org.apache.hadoop.log.metrics.EventCounter を使用してください。実行ログ: /tmp/yarn/yarn_20131107020505_79b41443-b9f4-4d36-a0eb-4f0d79cd3ce9.log java.io.FileNotFoundException: ファイルが存在しません: hdfs://aa.bb.com:8020/opt/nfsmount/mypath/custom org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:824) の .jar org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:288) org.apache.hadoop.mapreduce org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager の .filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:224)。

これに関するヘルプは大歓迎です。

よろしく、GHK。

4

1 に答える 1

1

いくつかのオプションがあります。ハイブ クエリを実行する前に、必要なすべての jar がクラスパスにある必要があります。

オプション 1:<file>/hdfs/path/to/your/jar</file> Oozie ワークフローでカスタム jar を追加する

オプション 2:--auxpath /local/path/to/your/jar Python でハイブ スクリプトを呼び出すときに属性を使用します。例えば:hive --auxpath /local/path/to/your.jar -e {query}

于 2013-11-11T12:08:03.963 に答える