Parquet文档描述了几种不同的编码here
在读/写期间它是否在文件内部以某种方式发生变化,或者我可以设置它? Spark文档中没有任何关于它的内容。只有来自Netflix团队的Ryan Blue的演讲才发现slides。他将镶木地板配置设置为sqlContext
sqlContext.setConf("parquet.filter.dictionary.enabled", "true")
看起来它不是Parquet文件中的普通字典编码。
答案 0 :(得分:6)
所以我找到了关于twitter engineering blog的问题的答案。
当许多独特的值<1时,Parquet启用了自动字典编码。 10 ^ 5。 Here是宣布Parquet 1.0的帖子,其中包含自我调整字典编码
<强> UPD:强>
可以在SparkSession配置中切换字典编码:
public void setFragment(Fragment fragmentWhichYouWantToShow) {
fm = getSupportFragmentManager();
ft = fm.beginTransaction();
ft.replace(R.id.container, fragmentWhichYouWantToShow);
ft.commit();
关于按列编码,在7月14日创建的Parquet的Jira中有一个开放的issue改进。由于字典编码是默认值并且仅适用于所有表格,因此它关闭了Delta编码(Jira)这个bug的issue这是唯一合适的数据编码,比如时间戳几乎每个值都是唯一的。
<强> UPD2 强>
我们如何判断哪个编码用于输出文件?
我使用了镶木地板工具。
- &GT; brew安装实木复合地板工具(适用于mac)
- &GT;实木复合地板工具meta your_parquet_file .snappy.parquet
输出:
SparkSession.builder
.appName("name")
.config("parquet.enable.dictionary","false") //true
PLAIN和PLAIN_DICTIONARY是用于该列的编码
答案 1 :(得分:-1)
我不确定自己是否理解了查询的整个范围(在这种情况下,请随时澄清)。
您可以使用&#34; CREATE TABLE src(id int)指定配置单元表的存储选项使用配置单元选项(fileFormat&#39;镶嵌&#39;)&#34; reference
This one should be easier to follow and more comprehensive
读/写文件: val usersDF = spark.read.load(&#34; examples / src / main / resources / users.parquet&#34;) usersDF.select(&#34; name&#34;,&#34; favorite_color&#34;)。write.save(&#34; namesAndFavColors.parquet&#34;)
我还假设您可能已经检查过: - sqlContext.parquetFile(&#34; File_to_be_read.parquet&#34;) - myDataFrame.saveAsParquetFile(&#34; file_to_be_saved.parquet&#34;)