我正在尝试通过 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 的大文本文件。但是,无论我指定什么块大小或采用什么方法,创建的零件文件的数量和它们的大小都是相同的。我可以更改使用 repartition 和 coalesce 函数生成的部分文件的数量,但我必须使用不会以任何方式打乱数据框中的数据的方法!
我也尝试过指定
f.write.option("parquet.block.size", 1048576).parquet("/path/to/output")
但没有运气。有人可以强调我做错了什么吗?还有我可以使用的任何其他方法可以改变写入hdfs的镶木地板块大小吗?