我试图通过spark shell编辑hadoop块大小配置,以便生成的镶木地板部件文件具有特定的大小。我尝试用这种方式设置几个变量: -
val blocksize:Int = 1024*1024*1024
sc.hadoopConfiguration.setInt("dfs.blocksize", blocksize) //also tried dfs.block.size
sc.hadoopConfiguration.setInt("parquet.block.size", blocksize)
val df = spark.read.csv("/path/to/testfile3.txt")
df.write.parquet("/path/to/output/")
测试文件是一个大约3.5 GB的大文本文件。但是,无论我指定什么块大小或我采用的方法,创建的零件文件的数量和它们的大小都是相同的。我可以更改使用重新分区和合并函数生成的零件文件的数量,但我必须使用和接近不会以任何方式改变数据框中的数据!
我也尝试过指定
f.write.option(" parquet.block.size",1048576).parquet(" / path / to / output")
但没有运气。有人可以强调我做错了吗?还有什么其他方法我可以使用,可以改变写入hdfs的拼花块大小?