我在一个文件夹里有gz文件。我只需要从这些文件3列,但每行有超过100个。现在我用这种方式创建一个视图。
drop table MAK_CHARGE_RCR;
create external table MAK_CHARGE_RCR
(LINE string)
STORED as SEQUENCEFILE
LOCATION '/apps/hive/warehouse/mydb.db/file_rcr';
drop view VW_MAK_CHARGE_RCR;
create view VW_MAK_CHARGE_RCR as
Select LINE[57] as CREATE_DATE, LINE[64] as SUBS_KEY, LINE[63] as RC_TERM_NAME
from
(Select split(LINE, '\\|') as LINE
from MAK_CHARGE_RCR) a;
视图中有我需要的字段。现在我也要这么做,但是没有CTA,我不知道该怎么做。我能做什么?
有人告诉我table一定是这个样子
create external table MAK_CHARGE_RCR
(CREATE_DATE string, SUBS_KEY string, RC_TERM_NAME etc)
我可以这样把线分开
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\\|'
但我需要列出每一列。我有另外一组超过1000列的文件。所有这些我都要列出来。这似乎有点过分,所以我想知道是否有可能这样做
create external table arstel.MAK_CHARGE_RCR
(split(LINE, '\\|')[57] string,
split(LINE, '\\|')[64] string
etc)
这显然不起作用,但也许有解决办法?
1条答案
按热度按时间cfh9epnr1#
正则表达式
出于教育目的
附笔
我打算创建一个csv serde的增强版本,除了一个额外的参数和请求列的位置。
演示
猛击
Hive