我有一个带有分区的表,我使用 avro 文件或文本文件来创建并插入到表中。
一旦 table 完成,有没有办法转换成 Parquet 。
我的意思是我知道我们可以说 CREATE TABLE default.test( name_id STRING)
PARTITIONED BY ( year INT, month INT, day INT ) STORED AS PARQUET
最初是在创建表本身时。
在我的用例中,我最初必须使用文本文件。这是因为我想避免每次插入或更新时在分区文件夹内创建多个文件。我的表有大量的插入和更新,这导致性能下降。
在创建表并插入数据后,有没有办法可以转换为 Parquet ?
最佳答案
您可以在 hdfs 中的数据上创建一个表,该表可以存储为文本、avro 或任何格式。
然后您可以使用以下方法创建另一个表:
CREATE TABLE x_parquet LIKE x_non_parquet STORED AS PARQUET;
然后,您可以将压缩设置为 snappy 或 gzip 之类的内容:
SET PARQUET_COMPRESSION_CODEC=snappy;
然后您可以从非 Parquet 表中获取数据并将其插入到新的 Parquet 支持的表中:
INSERT INTO x_parquet select * from x_non_parquet;
现在,如果您想节省空间并避免混淆,我会针对任何数据摄取自动执行此操作,然后删除原始的非 Parquet 格式。这将帮助您的查询运行得更快,并使您的数据占用更少的空间。
关于text-files - Impala - 将现有表格转换为 Parquet 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365373/