【问题标题】:spark 2.3.0, parquet 1.8.2 - statistics for a binary field does't exist in resulting file from spark write?spark 2.3.0,parquet 1.8.2 - 二进制字段的统计信息在 spark 写入的结果文件中不存在?
【发布时间】:2018-07-02 03:16:18
【问题描述】:

在 spark master 分支上 - 我尝试将带有“a”、“b”、“c”的单列写入镶木地板文件 f1

scala> List("a", "b", "c").toDF("field1").coalesce(1).write.parquet("f1")

但保存的文件没有统计信息(最小值,最大值)

$ ls f1/*.parquet
f1/part-00000-445036f9-7a40-4333-8405-8451faa44319-c000.snappy.parquet
$ parquet-tool meta  f1/*.parquet
file:        file:/Users/stephen/p/spark/f1/part-00000-445036f9-7a40-4333-8405-8451faa44319-c000.snappy.parquet 
creator:     parquet-mr version 1.8.2 (build c6522788629e590a53eb79874b95f6c3ff11f16c) 
extra:       org.apache.spark.sql.parquet.row.metadata = {"type":"struct","fields":[{"name":"field1","type":"string","nullable":true,"metadata":{}}]} 

file schema: spark_schema 
--------------------------------------------------------------------------------
field1:      OPTIONAL BINARY O:UTF8 R:0 D:1

row group 1: RC:3 TS:48 OFFSET:4 
--------------------------------------------------------------------------------
field1:       BINARY SNAPPY DO:0 FPO:4 SZ:50/48/0.96 VC:3 ENC:BIT_PACKED,RLE,PLAIN ST:[no stats for this column]

任何指针都将不胜感激。 谢谢。

【问题讨论】:

    标签: apache-spark parquet


    【解决方案1】:

    ShowMetaCommand.java 中将parquet.strings.signed-min-max.enabled 设置为true 后,parquet-tools 元显示 min,max。

    @@ -57,8 +57,9 @@ public class ShowMetaCommand extends ArgsOnlyCommand {
    
         String[] args = options.getArgs();
         String input = args[0];
    
         Configuration conf = new Configuration();
    +    conf.set("parquet.strings.signed-min-max.enabled", "true");
         Path inputPath = new Path(input);
         FileStatus inputFileStatus = inputPath.getFileSystem(conf).getFileStatus(inputPath);
         List<Footer> footers = ParquetFileReader.readFooters(conf, inputFileStatus, false);
    

    结果

    row group 1: RC:3 TS:56 OFFSET:4 
    --------------------------------------------------------------------------------
    field1:       BINARY SNAPPY DO:0 FPO:4 SZ:56/56/1.00 VC:3 ENC:DELTA_BYTE_ARRAY -- ST:[min: a, max: c, num_nulls: 0]
    

    【讨论】:

    • parquet中是否所有的二进制列都有max-min统计?
    猜你喜欢
    • 2017-02-13
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2018-10-27
    • 2018-09-24
    • 2019-05-07
    • 2023-04-03
    相关资源
    最近更新 更多