2017-10-26 6 views
1

hadoopクラスタ(BigInsight 4.1ディストリビューション)上でスパーク(1.5.1バージョン)ジョブの出力としてハイブテーブルを作成しようとしています。私の推測は、テーブルを作成するためにデフォルトのユーザー(この場合は '糸'ではなくジョブのサブミッターのユーザー名)を使用しているため、そうすることができません。スパークジョブによるハイブテーブルの作成

hive-site.xmlファイルをカスタマイズして、ハイブテーブルを作成する権限を持つ認証済みユーザーを設定しようとしましたが、動作しませんでした。

また、Hadoopユーザー変数を認証済みユーザーに設定しようとしましたが、それも機能しませんでした。

私はtxtファイルを保存しないで、ハイブテーブルを作成してパフォーマンスを最適化し、orc圧縮を使用して出力のサイズを縮小したいと考えています。

私の質問は以下のとおりです。

  • は、指定したユーザーとスパークデータフレームAPI の書き込み機能を呼び出すための方法はありますか?
  • oozieのワークフローファイルを使用してユーザー名を選択することはできますか?
  • 誰かが別のアイデアを持っているか、この問題に直面していますか?

ありがとうございます。 ハタク!

+0

はい、oozieではユーザー名を設定できますが、ハイブサイトはユーザーのなりすましをサポートするように設定する必要があります。 –

+0

ありがとうございました。あなたの答えに基づいて、hive-site.xmlでプロパティ "hive.server2.enable.doAs"をtrueに設定する必要があることがわかりました。しかし、私はこれがクラスターにあるxmlで行われなければならないと思います。 – Hatak

+0

私が知る限り、それは両方の場所に設定する必要があります。サーバーがユーザー情報をディスクに渡すように指示します。もう1つは、クライアントにそれをサーバーに渡すように指示します。ところで、デフォルト値はtrueです –

答えて

0

dfがあなたのデータを保持して考えてみましょう、あなたはJavaでは

を書き込むことができます。

df.write().saveAsTable("tableName"); 

あなたは上書き、追加Scalaで

df.write().mode(SaveMode.Append).saveAsTable("tableName"); 

のように異なるSaveModeを使用することができます。

df.write.mode(SaveMode.Append).saveAsTable(tableName) 

保存したいタイプに応じて、他の多くのオプションを指定することができます。 Txt、ORC(バケット付き)、JSON

+0

あなたの返事ありがとうございます。私はすでにデータフレームをハイブテーブルとして保存する方法を知っていますが、私の問題は権限と関連しています。私の仕事はハイブのメタストアに書き込む権利がなく、私はそれを解決しようとしています。 – Hatak

関連する問題