说我有一个文件“ fruitsbought.csv”,其中包含许多包含日期字段的记录。
是否可以通过基于该文本文件创建“ fruits”表来进行“分区”以获得更好的性能,同时创建一个分区,在该分区中fruitsbought.txt中的所有行都将与该分区匹配,例如是否要这样做年和月,要创建?
还是我必须作为一个单独过程的一部分,为每年创建一个目录,然后将在那一年过滤掉的相应“ .csv”文件放入HDFS的目录结构中,然后才能在impala-shell中创建表?
听说您可以创建一个空表,设置分区,然后使用“ Insert”语句,该语句恰好包含该记录所要进入的分区。尽管在目前的情况下,我已经有一个“ fruitsbought.csv”,其中包含我想要的每条记录,但我喜欢如何将其放入表中(尽管它没有parititionig)。
我是否需要开发一个separte流程来将一个文件预分割为在正确分区下排序的多个文件?(一个文件非常大)。
使用fruitsbought.csv示例创建外部表(id只是示例,...-表示表中其余列):
CREATE EXTERNAL TABLE fruitsboughexternal ( id INT, .....
mydate STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 'somelocationwithfruitsboughtfile/';
创建日期分区表
CREATE TABLE fruitsbought(id INT, .....) PARTITIONED BY (year INT, month INT, day INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
INSERT INTO fruitsbought PARTITION(year, month, day) SELECT id, ..., year(mydate), month(mydate), day(mydate) FROM fruitsboughexternal;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句