我这里有一个类似的问题:由多个空格分隔的配置单元表源
我的数据如下:
AL, 01, 2016010700, , BEST, 0, 266N, 753W
AL, 01, 2016010706, , BEST, 0, 276N, 747W
AL, 01, 2016010712, , BEST, 0, 287N, 738W
AL, 01, 2016010712, , BEST, 0, 287N, 738W
这意味着我的列分隔符是“一个逗号加上可变数量的空格”。
我试着简单地修改 field.delim
在正则表达式中添加这个逗号,但它不起作用。结果是,所有数据都被放入第一列( basin
)所有其他列都为空。
CREATE EXTERNAL TABLE IF NOT EXISTS default.myTable1
(
basin string
,cy string
,yyyymmddhh int
,technum_min string
,tech string
,tau string
,lat_n_s string
,lon_e_w string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
WITH SERDEPROPERTIES ("field.delim"=",\\s+")
LOCATION '/data';
我正在运行hdp2.5(配置单元1.2.1)。
谢谢你的帮助和建议。
2条答案
按热度按时间x7yiwoj41#
这个怎么样
deikduxw2#
我们有两种方法来解决你的问题。使用下面的选项创建表“rawtbl”
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
并使用trim()删除空间或者你可以用正则表达式
我已经用regex更新了答案,regex是由请求字段组成的独立文本输入文件。regex包含7个regex组,在每行上捕获请求的字段。