可以在拼花格式持久化数据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)应该够了,对吧? –
这实际上取决于你想要做什么。对于简单的统计数据,可以用一些中间聚合的帮助来确定。对于密集型机器学习,可能不会。 –