2013-04-01 20 views
6

4台のマシンからなるCDH4クラスタ(1つのマスターすべて、3つの "ダム"ワーカー)で稼働する、怠惰なワークフローがあります。ハイブメタストアは、mysql(ドライバが存在する)を使用してマスタ上で実行され、oozieサーバもmysqlを使用してマスタ上で実行されます。 Webインターフェイスを使用して、想定どおりにハイブをインポートしたり照会したりできますが、同じクエリを同じワークフローで実行すると失敗します。 「IF EXISTS」を追加しても、以下のエラーが発生します。私はハイブジョブにプロパティとして接続情報を追加しようとしましたが、成功しませんでした。Oozieワークフロー:ハイブテーブルが見つかりませんでしたが、存在します

誰でも私にヒントを教えてもらえますか?私は何かが欠けていたか?それ以上の情報は必要ですか?

これは、ジョブのログの出力です:

Script [drop.sql] content: 
    ------------------------ 
    DROP TABLE IF EXISTS performance_log; 

    ------------------------ 

    Hive command arguments : 
    -f 
    drop.sql 

    ================================================================= 

    >>> Invoking Hive command line now >>> 

    Intercepting System.exit(10001) 

    <<< Invocation of Main class completed <<< 

    Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001] 

    Oozie Launcher failed, finishing Hadoop job gracefully 

そして、これはエラーメッセージです:

FAILED: SemanticException [Error 10001]: Table not found performance_log 
    Intercepting System.exit(10001) 
    Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], exit code [10001] 
+0

このHueのブログ記事は、[Hiveアクションを実行する方法]を示しています(http://gethue.tumblr.com/post/60937985689/ hadoop-tutorials-ii-2-execute-hive-queries-and)をOozieのワークフローで使用します。 – Romain

答えて

12

問題は、あなたのMYSQLがどこにある他のノードが分からないので、あなたエラーテーブルが見つかりません。あなたのハイブアクションでoozieワークフローディレクトリ内の2つのこと

  1. コピーハイブ-site.xmlの
  2. を行う必要があり

私のハイブ-site.xmlのを使用oozieを伝えますこの

action name="hive-node"> <hive xmlns="uri:oozie:hive-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <job-xml>hive-site.xml</job-xml>

以下のようなものうまくいくはずです。

おかげ

+0

私はそれを試してみます –

+0

魅力のように動作します。ありがとう! –

+1

色相がある場合は、ワークフローのプロパティでそれを行うようにしてください。そのため、ワークフローのすべてのハイブノード/ステップに適用されます。 –

0

私は離れて適切にハイブ-site.xmlの指定について言及ソリューション上から、同じ問題を経験しています。私も同様に次のことをお勧めします。

  1. mysqlコネクタjar(mysqlをメタストアとして使用している場合)を使用しているかどうかを確認するには、クラスパスで使用可能です。
  2. oozieハイブアクションの場合は、ハイブjarを複数回追加しないでください。例えばそれはすでにoozie share libに存在しており、ワークフロー/ libにもコピーしています。
関連する問題