2017-02-10 2 views
0

Wie speichere ich ein Spark-Datenframe in einer Partition einer partitionierten Hive-Tabelle?Wie kann ich einen Spark-Datenframe als Teil einer Partitionierten Hive-Tabelle speichern

raw_nginx_log_df.write.saveAsTable("raw_nginx_log") 

die obige Art und Weise könnte die gesamte Tabelle zu überschreiben, aber nicht eine bestimmte Partition. Obwohl ich das Problem durch den folgenden Code lösen kann, ist es offensichtlich nicht elegant.

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

es scheint, dass in stackoverflowc.com es keine ähnlichen Fragen je zuvor gefragt ist!

+2

'raw_nginx_log_df.write.partitionBy (" partition_col "). Mode (" überschreiben "). SaveAsTable (" raw_nginx_log ")' – mrsrinivas

+0

Was ist, wenn raw_nginx_log_df2 in einer anderen Partition der Tabelle gespeichert werden muss? –

+1

* "nicht elegant" * ist eine Frage des persönlichen Geschmacks * (zum Beispiel, Scala macht mich kotzen) * - die Frage ist, funktioniert es? Macht es leistungsmäßig einen Unterschied? Wenn Sie nicht zufrieden sind, können Sie einen Beitrag zur Spark-Code-Basis beitragen? –

Antwort

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

Für Parkettfeilen/Tabellen. Sie können es gemäß Ihrer Anforderung anpassen.

Verwandte Themen