有没有一种方法可以使用Impala对现有文本文件进行分区,而无需将文件预先拆分到分区目录中?

濑那

说我有一个文件“ fruitsbought.csv”,其中包含许多包含日期字段的记录。

是否可以通过基于该文本文件创建“ fruits”表来进行“分区”以获得更好的性能,同时创建一个分区,在该分区中fruitsbought.txt中的所有行都将与该分区匹配,例如是否要这样做年和月,要创建?

还是我必须作为一个单独过程的一部分,为每年创建一个目录,然后将在那一年过滤掉的相应“ .csv”文件放入HDFS的目录结构中,然后才能在impala-shell中创建表?

听说您可以创建一个空表,设置分区,然后使用“ Insert”语句,该语句恰好包含该记录所要进入的分区。尽管在目前的情况下,我已经有一个“ fruitsbought.csv”,其中包含我想要的每条记录,但我喜欢如何将其放入表中(尽管它没有parititionig)。

我是否需要开发一个separte流程来将一个文件预分割为在正确分区下排序的多个文件?(一个文件非常大)。

Arkadiusz Bicz
  1. 使用fruitsbought.csv示例创建外部表(id只是示例,...-表示表中其余列):

    CREATE EXTERNAL TABLE fruitsboughexternal ( id INT, .....
    mydate STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 'somelocationwithfruitsboughtfile/';

  2. 创建日期分区表

CREATE TABLE fruitsbought(id INT, .....) PARTITIONED BY (year INT, month INT, day INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

  1. 将数据导入水果采购表,分区参数必须处于选择的最后位置(当然mydate必须采用impala理解的格式,例如2014-06-20 06:05:25)

INSERT INTO fruitsbought PARTITION(year, month, day) SELECT id, ..., year(mydate), month(mydate), day(mydate) FROM fruitsboughexternal;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档