我使用pySpark编写parquet文件。我想更改该文件的hdfs块大小。我像这样设置块大小,但它不起作用:
sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m")
这个设置必须在启动pySpark作业之前进行吗?如果是,如何设置。
我使用pySpark编写parquet文件。我想更改该文件的hdfs块大小。我像这样设置块大小,但它不起作用:
sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m")
这个设置必须在启动pySpark作业之前进行吗?如果是,如何设置。
sc._jsc.hadoopConfiguration()
并使用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.hadoopConfiguration.set("dfs.block.size", "128m")
您可以设置Spark写入文件的块大小:
myDataFrame.write.option("parquet.block.size", 256 * 1024 * 1024).parquet(destinationPath)
我曾经遇到过类似的问题,但是我找到了解决方法。它需要一个数字而不是“128m”。因此,这应该可以解决问题(至少对我有效!):
block_size = str(1024 * 1024 * 128)
sc._jsc.hadoopConfiguration().set("dfs.block.size", block_size)