2016-12-04 17 views
0

我使用pySpark编写实木复合地板文件。我想改变该文件的hdfs块大小。我设置块大小是这样,它不工作:如何更改pyspark中的hdfs块大小?

sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m") 

这是否有启动pySpark作业之前设置?如果是这样,该怎么做。

+0

嗨,如果有下面的答案已经解决您的问题,请考虑[接受](http://meta.stackexchange.com/q/5234/ 179419)最佳答案或添加您自己的解决方案。所以,这表明你已经找到了解决方案。 – mrsrinivas

+0

我不确定你可以改变它,这是如何在HDFS中写入文件。 Spark将为每个文件分区(映射器类型)分配一个任务。这就是为什么很多人推荐Spark有256m的区块。 –

回答

1

尝试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") 
+0

它不工作。我正在使用pyspark版本1.6.2。 –

+0

请检查更新 – mrsrinivas

0

我有一个类似的问题,但我想通了这个问题。它需要一个不是“128m”的数字。因此,这应该工作(至少为我工作!):

block_size = str(1024 * 1024 * 128) 
sc._jsc.hadoopConfiguration().set("dfs.block.size", block_size)