python - 使用sparkConf().set设置2个配置值

标签 python apache-spark pyspark

我有一个脚本来处理几百 GB 的数据,当我尝试处理超过 500GB 的数据时,我遇到了麻烦,低于这个值,一切都工作正常。 首先调试应用程序时,我收到有关超过 Spark.driver.maxResultSize 值限制的错误,因此我将此值增加到 4g,现在失败的任务正在工作,但是,现在当我尝试时,我遇到了另一个问题将结果保存到 Parquet 文件中,任务失败并抛出此错误

17/01/27 06:35:27 INFO DAGScheduler: Job 7 failed: parquet at NativeMethodAccessorImpl.java:-2, took 12.106390 s
17/01/27 06:35:27 ERROR InsertIntoHadoopFsRelation: Aborting job.
org.apache.spark.SparkException: Job aborted due to stage failure: Serialized task 146:0 was 765207245 bytes, which exceeds max allowed: spark.akka.frameSize (134217728 bytes) - reserved (204800 bytes). Consider increasing spark.akka.frameSize 

所以,看来我需要增加spark.akka.frameSize值

我的问题是,我已经使用函数sparkConf().set增加了maxResultSize,但我不知道如何(或语法)增加sparkConf().set中的两个值。

这就是我在这些部分中的代码的样子:

conf = (SparkConf().set("spark.driver.maxResultSize", "4g"))
sc = SparkContext(conf=conf)
sqlContext = HiveContext(sc)

以及失败的任务:

sqlContext.sql(sql).coalesce(5).write.parquet(sys.argv[3], mode='overwrite')

只有一件事,我无法修改spark集群中的conf文件,而且,我们使用luigi将任务提交到spark,所以我无法在执行时修改spark-submit字符串脚本(这就是我直接从脚本修改参数的原因)

任何指导,我们表示赞赏。

最佳答案

RTFM - 直接来自 Spark 1.6.3 Python API documentation ...

class pyspark.SparkConf (...)

All setter methods in this class support chaining.
For example, you can write conf.setMaster"local").setAppName("My app")

关于python - 使用sparkConf().set设置2个配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888856/

相关文章:

azure - 自动化 HDInsight Spark 配置并按计划提交作业?

python - scrapy - 如果跟随无限网站则终止抓取

scala - 如何从IntelliJ(或其他IDE)运行Spark测试

python - 错误: You must give at least one requirement to install -- when running: pip install --upgrade --no-binary hdbscan

apache-spark - SparkSQL/配置单元 : equivalent of MySQL's `information_schema.table.{data_length, table_rows}` ?

python - Python中Spark RDD的列操作

python - 有没有办法自动关闭 Spark/jupyter session

python - "getNumPartitions"是一个昂贵的操作吗?

python - 如何使用属性 setter 作为回调

python - 从多维列表 Python 中获取项目