如何在Apache Drill中将.json数据集转换为无分区的.parquet文件
解决Drill生成无分区Parquet文件的问题
我之前也碰到过类似的情况——Drill默认会针对大数据量输出分区Parquet文件来优化性能,但如果我们需要无分区的单文件输出,只需要补充一个关键参数设置并确保查询逻辑不带分区即可:
具体操作步骤
- 先执行你已经完成的基础配置(切换存储并设置输出格式):
0: jdbc:drill:zk=local> use dfs.tmp; 0: jdbc:drill:zk=local> ALTER SESSION SET `store.format` = 'parquet'; - 新增会话参数,强制Drill输出单个文件:
0: jdbc:drill:zk=local> ALTER SESSION SET `store.parquet.single_file_output` = true; - 执行你的CTAS(Create Table As Select)语句,注意不要添加
PARTITION BY子句,示例如下:0: jdbc:drill:zk=local> CREATE TABLE dfs.tmp.business_single AS SELECT * FROM dfs.tmp.business.json;
结果验证
执行完成后,前往dfs.tmp对应的文件系统目录查看,你会看到生成了单个.parquet文件,而非带有分区子目录的结构。这个参数会强制Drill将所有输出合并到一个文件中,完全满足无分区转换的需求(如果数据量极大,单文件可能会带来读取性能问题,但完全匹配你的当前需求)。
内容的提问来源于stack exchange,提问作者Jerry George
相关产品推荐
相关产品推荐

