2. .option("parquet.block.size", 16*1024*1024)
.option("compression", «gzip»)
HdfsNamedFileStatus{path=hdfs://localhost:63362/test/pa/snapshot/snp/part-00001-00000.c0.gz.parquet; isDirectory=false; length=151256095; replication=1; blocksize=16777216; }
spark.conf.set("spark.sql.files.maxPartitionBytes", 16 * 1024 * 1024)
spark.conf.set("spark.sql.files.openCostInBytes", 16 * 1024 * 1024)
val df = spark.table(files.head.getPath.toString)
210000
10
[0,23301]
[1,23308]
[2,23303]
[3,23315]
[4,23303]
[5,23300]
[6,23309]
[7,23303]
[8,23298]
[9,260]
spark.conf.set("spark.sql.files.maxPartitionBytes", 512 * 1024)
spark.conf.set("spark.sql.files.openCostInBytes", 4 * 1024 * 1024)
val df2 = spark.read.parquet("/test/pa/snapshot/snp/part-00001-00000.c0.gz.parquet»)
210000
289
[6,14786]
[17,8515]
[38,14790]
[49,8518]
[70,14779]
[81,8524]
[102,14790]
[113,8525]
[134,14779]
[145,8524]
[166,14777]
[177,8523]
[198,14790]
[209,8519]
[230,14779]
[241,8524]
[262,14773]
[273,8525]
[288,260]
А вот тут уже интереснее, сжатый файл читается в десять партиций, потому что ParquetWriter накапливает записи в блок до достижения им указанного размера, но он становится меньше после сжатия! При этом размер сопоставленного HDFS блока остаётся таким же, как и указанный при записи. А вот если читать по маленьким кусочкам, то все пятнадцать блоков можно найти, но куча партиций по прежнему пустые