2017-02-10 5 views
0

sparkデータフレームをパーティションハイブテーブルの1つのパーティションに保存する方法はありますか?sparkデータフレームをパーティションハイブテーブルの一部として保存する方法

raw_nginx_log_df.write.saveAsTable("raw_nginx_log") 

上記の方法でテーブル全体を上書きすることはできますが、特定のパーティションを上書きすることはできません。 私は次のコードで問題を解決できますが、それは明らかにエレガントではありません。

raw_nginx_log_df.registerTempTable("tmp_table") 
sql(s"INSERT OVERWRITE TABLE raw_nginx_log PARTITION (par= '$PARTITION_VAR')") 

これは、stackoverflowc.comでこれまでに尋ねられた類似の質問はありません!

+2

raw_nginx_log_df.write.partitionBy( "partition_col")。モード( "上書き")saveAsTable( "raw_nginx_log") ' – mrsrinivas

+0

raw_nginx_log_df2をテーブルの別のパーティションに保存する必要がある場合はどうなりますか? –

+1

*「エレガントではない」*は個人的な趣味の問題です(例えば、Scalaは私にお土産になります)* - 質問はうまくいきますか?性能面で違いはありますか?満足できない場合は、Sparkコードベースにパッチを提供できますか? –

答えて

0
YourDataFrame.write.format("parquet").option("/pathHiveLocation").mode(SaveMode.Append).partitionBy("partitionCol").saveAsTable("YourTable") 

パーケットファイル/テーブルの場合。要件に応じてカスタマイズすることができます。

関連する問題