text-files - Impala - 将现有表格转换为 Parquet 格式

标签 text-files avro parquet impala

我有一个带有分区的表,我使用 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/

相关文章:

java - 为什么使用 java 扫描仪从 txt 文件读取的字符串不等于相同的字符串?

json - 如何修复预期的启动联合。在命令行上将 JSON 转换为 Avro 时得到 VALUE_NUMBER_INT?

hadoop - 如何为 Avro MapReduce 作业传入多个输入目录

apache-spark - 如何在Spark中更有效地加载Parquet文件(pySpark v1.2.0)

PHP从txt文件运行代码

java - 在eclipse中添加了文本文件但找不到它

python - 当包含的 Writer() 关闭它时,我仍然可以使用 StringIO 吗?

apache-spark - Hive无法读取Spark生成的分区 Parquet 文件

apache-spark - 为什么聚合的 Spark Parquet 文件比原始文件大?

java - 在 Java 中写入文本文件的中间