栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么在Spark SQL写完之后Impala无法读取实木复合地板文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么在Spark SQL写完之后Impala无法读取实木复合地板文件?

在Apache Spark官方文档中的Parquet Files的“ 配置”部分中:

spark.sql.parquet.writeLegacyFormat (默认值:

false

如果为true,则将以Spark 1.4及更低版本写入数据。例如,十进制值将以Apache
Parquet的固定长度字节数组格式编写,其他系统(例如Apache Hive和Apache
Impala)将使用该格式。如果为false,将使用Parquet中较新的格式。例如,小数将以基于int的格式编写。如果Parquet输出打算用于不支持这种较新格式的系统,请设置为true。

官方文档更新前给出的答案

Hive无法读取由Spark编写的非常相似的SPARK-20297
Parquet
Decimal(12,2),并且Impala
最近(20
/ Apr / 17 01:59)解决为“不是问题”。

主要要点是使用

spark.sql.parquet.writeLegacyFormat
属性并以旧格式编写实木复合地板元数据(我在官方文档的“
配置”下没有看到此描述,而在SPARK-20937中对此进行了报告)。

启用spark.sql.parquet.writeLegacyFormat时,Hive和Impala可以读取Spark写入的数据。

它确实遵循更新的标准-https://github.com/apache/parquet-
format/blob/master/LogicalTypes.md#decimal,但我错过了文档。难道不是Impala或Hive中的bug?

int32 /
int64选项存在于十进制规范的原始版本中,但并未得到广泛实现:https :
//github.com/Parquet/parquet-
format/commit/b2836e591da8216cfca47075baee2c9a7b0b9289。因此,这不是新旧版本,它只是许多系统未实现的替代表示。

这本SPARK-10400也可能是非常有帮助的读物(关于

spark.sql.parquet.writeLegacyFormat
财产的历史):

在致力于在SPARK-6777中实现Parquet向后兼容规则时,我们引入了SQL选项“
spark.sql.parquet.followParquetFormatSpec”。它指示我们是否应该使用Spark
1.4和更早版本采用的旧Parquet格式,还是使用Parquet格式规范中定义的标准格式。但是,此选项的名称有些令人困惑,因为我们不应该遵循该规范并不是超级直观。最好将其重命名为“
spark.sql.parquet.writeLegacyFormat”并反转其默认值(它们的含义相反)。请注意,此选项不是“
public”(isPublic为false)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号