可以在拼花格式持久化數據JSON讀
hcData=sqlContext.read.option("inferSchema","true").json(path)
hcData.write.parquet("hcDataFile.parquet")
val hcDataDF = spark.read.parquet("hcDataFile.parquet")
後//在火花1.6創建在火花2.0或registerAsTemp表的臨時視圖並使用SQL用於進一步邏輯
hcDataDF.createOrReplaceTempView("T_hcDataDF")
//這是一種執行RDD檢查點的手動方式(不支持DataFrames),這將減少RDD Lineage,從而提高性能。
執行,使用Dyanamic資源分配的火花提交命令:
//確保在集羣中啓用以下,否則,你可以使用火花峯會命令這些參數作爲--conf
• spark.dynamicAllocation.enabled=true
• spark.dynamicAllocation.initialExecutors=5
• spark.dynamicAllocation.minExecutors=5
• spark.shuffle.service.enabled=true
• yarn.nodemanager.aux-services=mapreduce_shuffle,spark_shuffle
• yarn.nodemanager.aux-services.spark_shuffle.class
=org.apache.spark.network.yarn.YarnShuffleService
//星火提交命令
./bin/spark-submit --class package.hcDataclass \
--master yarn-cluster \
--deploy-mode cluster \
--driver-memory 1G \
--executor-memory 5G\
hcData*.jar
//對於動態資源分配我們並不需要指定遺囑執行人的#。 //作業將根據羣集帶寬自動獲取資源。
非常感謝。這對我來說是非常明確的答案。因此,對於10TB的數據,3個工作者和1個主人(每個m3.xlarge)應該夠了,對吧? –
這實際上取決於你想要做什麼。對於簡單的統計數據,可以用一些中間聚合的幫助來確定。對於密集型機器學習,可能不會。 –