将数据加载到 impala 分区表中

Posted

技术标签:

【中文标题】将数据加载到 impala 分区表中【英文标题】:load data into impala partitioned table 【发布时间】:2014-08-21 20:10:17 【问题描述】:

我在 HDFS 中有以下目录结构中的数据:

/exported/2014/07/01/00/SEARCHES/part-m-00000.bz2
                                 part-m-00001.bz2
/exported/2014/07/01/02/SEARCHES/part-m-00000.bz2
                                 part-m-00001.bz2
                                 part-m-00003.bz2
.
.
.
.
/exported/2014/08/01/09/SEARCHES/part-m-00005 .bz2

每个子目录下有多个零件文件。

我想将此数据集加载到 impala 表中,所以使用以下查询来创建表:

CREATE EXTERNAL TABLE search(time_stamp TIMESTAMP, ..... url STRING,domain STRING) PARTITIONED BY (year INT, month INT, day INT.hour INT) 行格式分隔字段以'\t'结尾;

然后

ALTER TABLE search ADD PARTITION (year=2014, month=08, day=01) LOCATION '/data/jobs/exported/2014/08/01/*/SEARCHES/';

但加载失败并出现以下错误:

ERROR: AnalysisException: Failed to load metadata for table: magneticbi.search_mmx
CAUSED BY: TableLoadingException: Failed to load metadata for table: search_mmx
CAUSED BY: RuntimeException: Compressed text files are not supported: part-m-00000.bz2

不确定执行此操作的正确方法是什么。

有人可以帮忙吗?

谢谢

【问题讨论】:

【参考方案1】:

这里有一个link to a table from Cloudera,描述了您的选择。总结一下:

Impala 支持以下压缩编解码器:

活泼。推荐它在压缩比和解压缩速度之间的有效平衡。 Snappy 压缩非常快,但 GZIP 可以节省更多空间。不支持文本文件。 GZIP。当需要实现***别的压缩(并因此最大程度地节省磁盘空间)时推荐使用。不支持文本文件。 放气。不支持文本文件。 BZIP2。不支持文本文件。 LZO,仅适用于文本文件。 Impala 可以查询 LZO 压缩的 Text 表,但目前无法创建它们或向其中插入数据;在 Hive 中执行这些操作。

【讨论】:

以上是关于将数据加载到 impala 分区表中的主要内容,如果未能解决你的问题,请参考以下文章

将数据加载到 Hive/Impala

如何将数据从 CSV 加载到 impala 的外部表中

如何将数据加载到 Hive 表并使其在 Impala 中也可访问

由于精度损失,无法将数据插入分区表

Impala 如何支持分区?

Hive和Impala加载和存储数据功能曝光