首页 > 解决方案 > Parquet 文件在使用 Hive 时没有来自 String 列的统计信息

问题描述

我使用 Spark 将一些数据直接写入 Parquet,一个没有 Hive,一个有 Hive。这就是我在没有 Hive 的情况下直接编写的方式

cube_op.sort("asn").write.parquet("/home/hadoop/work/aaa/agg1")

我看到所有列都存在最小最大统计信息。但是,当我运行相同并写入 Hive 时,我看不到字符串列的 min max。这是我使用 Hive 编写的方式

cube_op.sort("asn").write.insertInto("tbl1")

这些是我给出的属性

spark.sql("SET spark.sql.parquet.binaryAsString=true")
"parquet.strings.signed-min-max.enabled": "true"

我不确定造成这种差异的原因是什么。这是蜂巢版本。

hive --version
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/ais/cloudera/parcels/CDH-5.16.2-1.cdh5.16.2.p0.8/jars/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
...
Hive 1.1.0-cdh5.16.2

这显然是 Hive 的镶木地板版本

creator: parquet-mr version 1.6.0 (build 6aa21f877662518059cfebe7f2e00cb) 

标签: apache-sparkhiveparquet

解决方案


推荐阅读