5

我有一个有分区的表,我使用 avro 文件或文本文件来创建并插入到表中。

一旦桌子完成,有没有办法转换成镶木地板。我的意思是我知道我们CREATE TABLE default.test( name_id STRING) PARTITIONED BY ( year INT, month INT, day INT ) STORED AS PARQUET最初可以在创建表本身时说。
在我的用例中,我最初必须使用文本文件。这是因为我想避免每次插入或更新时在分区文件夹中创建多个文件。我的表有大量的插入和更新,这导致性能下降。在创建表并插入数据后,有没有办法可以转换为镶木地板?

4

1 回答 1

13

您可以在 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;

现在,如果您想节省空间并避免混淆,我会为任何数据摄取自动执行此操作,然后删除原始的非镶木地板格式。这将帮助您的查询运行得更快,并使您的数据占用更少的空间。

于 2014-10-22T19:34:41.463 回答