gpt4 book ai didi

scala - 如何在 Spark 中设置 Parquet 文件编码

转载 作者:行者123 更新时间:2023-12-03 03:40:10 25 4
gpt4 key购买 nike

Parquet 文档描述了几种不同的编码 here

在读/写过程中文件内部是否会发生某种变化,或者我可以设置它?Spark 文档中没有任何相关内容。仅找到slides摘自 Netflix 团队 Ryan Blue 的演讲。他将 parquet 配置设置为 sqlContext

sqlContext.setConf("parquet.filter.dictionary.enabled", "true")

看起来这与 Parquet 文件中的普通字典编码无关。

最佳答案

所以我在 Twitter Engineering 上找到了我的问题的答案 blog

当唯一值的数量 < 10^5 时,Parquet 会启用自动字典编码。 Here是一篇宣布 Parquet 1.0 具有自调整字典编码的帖子

更新:

可以在 SparkSession 配置中切换字典编码:

SparkSession.builder
.appName("name")
.config("parquet.enable.dictionary","false") //true

关于按列编码,有一个开放的issue作为 17 年 7 月 14 日创建的 Parquet Jira 的改进。由于字典编码是默认值并且仅适用于所有表,因此它关闭了 Delta 编码(Jira issue 对于此错误),这是唯一适合时间戳等数据的编码其中几乎每个值都是唯一的。

UPD2

我们如何知道输出文件使用了哪种编码?

  • 我使用了 Parquet 工具。

    ->brew install parquet-tools(适用于 Mac)
    -> parquet-tools 元 your_parquet_file.snappy.parquet

输出:

.column_1: BINARY SNAPPY DO:0 FPO:16637 SZ:2912/8114/3.01 VC:26320 ENC:RLE,PLAIN_DICTIONARY,BIT_PACKED
.column_2: BINARY SNAPPY DO:0 FPO:25526 SZ:119245/711487/1.32 VC:26900 ENC:PLAIN,RLE,BIT_PACKED
.

其中 PLAIN 和 PLAIN_DICTIONARY 是用于该列的编码

关于scala - 如何在 Spark 中设置 Parquet 文件编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45488227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com