2
火花新手在這裏。 我在Hive中有一張非常大的表格(大約130M條記錄,180列),我試圖用Spark將它打包成實木複合地板文件。 我正在使用默認的EMR集羣配置,6 * r3.xlarge實例來提交我用Python編寫的Spark應用程序。然後我在YARN上以集羣模式運行它,通常給驅動程序提供少量內存(幾千兆),其餘部分給執行程序。這裏是我的代碼,這樣做:在Spark上查詢Hive以獲得最佳性能的正確方法是什麼?
from pyspark import SparkContext
from pyspark.sql import HiveContext
sc = SparkContext(appName="ParquetTest")
hiveCtx = HiveContext(sc)
data = hiveCtx.sql("select * from my_table")
data.repartition(20).write.mode('overwrite').parquet("s3://path/to/myfile.parquet")
後來,我用類似這樣的東西提交:
spark-submit --master yarn --deploy-mode cluster --num-executors 5 --driver-memory 4g --driver-cores 1 --executor-memory 24g --executor-cores 2 --py-files test_pyspark.py test_pyspark.py
然而,我的任務永遠需要完成。在工作開始後,Spark很快就關閉了除一個工作人員以外的所有工作人員,因爲其他人沒有被使用,並且它需要幾個小時才能獲得來自Hive的所有數據。 Hive表本身還沒有分區或集羣(我還需要一些建議)。
你能幫助我理解我在做什麼錯了,我應該在哪裏何去何從,如何擺脫資源我的最大性能?
謝謝!
你可能想看看這個問題/答案。它不完全是最新的,但它應該幫助https://stackoverflow.com/questions/36927918/using-spark-to-write-a-parquet-file-to-s3-over-s3a-is-very-slow/36992096#36992096 – David