我使用pySpark编写实木复合地板文件。我想改变该文件的hdfs块大小。我设置块大小是这样,它不工作:如何更改pyspark中的hdfs块大小?
sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m")
这是否有启动pySpark作业之前设置?如果是这样,该怎么做。
我使用pySpark编写实木复合地板文件。我想改变该文件的hdfs块大小。我设置块大小是这样,它不工作:如何更改pyspark中的hdfs块大小?
sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m")
这是否有启动pySpark作业之前设置?如果是这样,该怎么做。
尝试SparkContext
from pyspark import SparkConf, SparkContext
conf = (SparkConf().setMaster("yarn"))
sc = SparkContext(conf = conf)
sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m")
txt = sc.parallelize(("Hello", "world", "!"))
txt.saveAsTextFile("hdfs/output/path") #saving output with 128MB block size
在Scala中设置它通过sc._jsc.hadoopConfiguration()
:
sc.hadoopConfiguration.set("dfs.block.size", "128m")
它不工作。我正在使用pyspark版本1.6.2。 –
请检查更新 – mrsrinivas
我有一个类似的问题,但我想通了这个问题。它需要一个不是“128m”的数字。因此,这应该工作(至少为我工作!):
block_size = str(1024 * 1024 * 128)
sc._jsc.hadoopConfiguration().set("dfs.block.size", block_size)
嗨,如果有下面的答案已经解决您的问题,请考虑[接受](http://meta.stackexchange.com/q/5234/ 179419)最佳答案或添加您自己的解决方案。所以,这表明你已经找到了解决方案。 – mrsrinivas
我不确定你可以改变它,这是如何在HDFS中写入文件。 Spark将为每个文件分区(映射器类型)分配一个任务。这就是为什么很多人推荐Spark有256m的区块。 –