2015-12-02 156 views
1

我需要使用spark-sql加載一個Hive表,然後在其上運行一些機器學習algho。我這樣做,寫作:Spark-SQl DataFrame分區

val dataSet = sqlContext.sql(" select * from table") 

它運作良好,但如果我想增加數據集數據幀的partions數,怎麼能我能做到這一點? 正常RDD我能做的寫作:

val dataSet = sc.textFile(" .... ", N) 

隨着我想有分區的N多。

感謝

回答

0

您可以​​3210或repartition產生的DataFrame,即:

val dataSet = sqlContext.sql(" select * from table").coalesce(N) 
+0

這是相當昂貴的操作,對不對? 無論如何都應該通過加快訓練步驟來降低聚結開銷。 謝謝 – Edge07

+0

是的。它涉及在集羣節點間傳輸所有數據。另一個選項可能是嘗試設置'spark.default.parallelism'配置屬性,但是您必須嘗試,我不知道它是否可行... – mgaido

+0

您也可以檢查此鏈接https://deepsense.io/優化火花與 - 分發逐和羣集逐/ –