2017-09-15 99 views
1
df.write.partitionBy("par").format("orc").saveAsTable("mytable") 

大家好,當我將Spark數據框保存爲分區配置表格時,進程非常緩慢,有人知道爲什麼嗎?是否有任何應該調整的參數?火花數據幀保存爲分區表非常緩慢

+0

嘗試'df.repartition( 「相提並論」)write.partitionBy( 「相提並論」)格式( 「獸人」)saveAsTable(。 「mytable」)' –

+0

你確定寫入表的實際過程很慢嗎?因爲當你編寫你的表格時,所有先前的轉換都是先應用的(因爲它們是懶惰的)。所以你看到的可能是整個管道的時間,而不僅僅是寫作行爲。 –

+0

好的,我會嘗試一下,但首先,爲什麼df.repartition(「par」)操作起作用?你能解釋一下嗎? –

回答

1

我想問題是數據幀分區不與配置單元分區「對齊」。這將在每個hive分區創建許多小文件。這是因爲數據數據幀的每個分區都包含hive分區的一些數據。

首先嚐試重新分區數據框在同一列:

df.repartition("par").write.partitionBy("par").format("orc")‌​.saveAsTable("mytabl‌​e") 
+0

b.rdd.getNumPartitions()= 1 b.repartition(「par」)。rdd.getNumPartitions()= 200我發現沒有重新分區,分區號是1,而在進行再分配操作時,數量爲200。分區的數量是多少? –