如何在Azure HDInsight上设置Spark中的拼花块尺寸?
我有大约3500个csv,我将其转换成按日期划分的拼花地板(此数据跨越7天)。我想设置拼花地板文件大小,使每个文件为1gb。目前我收到的文件太多(每天400-600个),大小在64到128 MB之间。我可以重新分区(使用重新分区/合并)为每个分区(每天)x个文件,但根据一天中存在的数据量,我仍然有不同的文件大小,因此第1天可能有20 gb,因此10个文件是2gb,但第2天有10 gb,因此每个文件是1gb。我正在研究如何设置/编码,使每个分区中的每个文件都是1gb。我正在使用pyspark,下面是我用来编写拼花地板文件的代码如何在Azure HDInsight上设置Spark中的拼花块尺寸?,azure,apache-spark,pyspark,parquet,azure-hdinsight,Azure,Apache Spark,Pyspark,Parquet,Azure Hdinsight,我有大约3500个csv,我将其转换成按日期划分的拼花地板(此数据跨越7天)。我想设置拼花地板文件大小,使每个文件为1gb。目前我收到的文件太多(每天400-600个),大小在64到128 MB之间。我可以重新分区(使用重新分区/合并)为每个分区(每天)x个文件,但根据一天中存在的数据量,我仍然有不同的文件大小,因此第1天可能有20 gb,因此10个文件是2gb,但第2天有10 gb,因此每个文件是1gb。我正在研究如何设置/编码,使每个分区中的每个文件都是1gb。我正在使用pyspark,下面
csv_reader_df.write.partitionBy("DateId").option("compression","snappy").parquet('hdfs://mycluster/home/sshuser/snappy_data.parquet')
拼花写手将做一个文件,每个火花分区。 您必须重新分区或合并以管理文件的数量
val PARQUET_BLOCK_SIZE: Int = 32 * 1024 * 1024
val targetNbFiles: Int = 20
csv_reader_df.coalesce(targetNbFiles).write.option("parquet.block.size",PARQUET_BLOCK_SIZE).partitionBy("DateId").option("compression","snappy").parquet('hdfs://mycluster/home/sshuser/snappy_data.parquet')
参考spark文档: 可以在SparkSession上使用setConf方法或使用SQL运行SET key=value命令来配置拼花地板 所以你可以通过这个设置
parquet.block.size