当数据本身包含逗号并且字段没有引号字符时,如何在 Hive 版本 0.13 中读取逗号分隔的文件。例子 fname,lname,country, city, addr, dob 是列名称,
tom, kate, USA,CA,los angeles,34 brad street 5thfloor, Jun/23/1975
russel,smith,USA, Tx, 763, grass street, 5th floor, dallas, Jan/31/1999
第一行数据中没有任何带逗号的列 地址字段的第二行数据中有逗号 达拉斯草街 763 号 5 楼
如何在 hive 0.13 版本中阅读此内容
谢谢 MX
最佳答案
假设 addr
是唯一可能包含逗号的字段
create external table mydata
(
fname string
,lname string
,country string
,city string
,addr string
,dob string
)
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
with serdeproperties ("input.regex" = "(.*?),(.*?),(.*?),(.*?),(.*),(.*)")
location '/user/hive/warehouse/mydata'
;
select * from mydata;
+--------------+--------------+----------------+-------------+--------------------------------------+-------------+
| mydata.fname | mydata.lname | mydata.country | mydata.city | mydata.addr | mydata.dob |
+--------------+--------------+----------------+-------------+--------------------------------------+-------------+
| tom | kate | USA | CA | los angeles,34 brad street 5thfloor | Jun/23/1975 |
+--------------+--------------+----------------+-------------+--------------------------------------+-------------+
| russel | smith | USA | Tx | 763, grass street, 5th floor, dallas | Jan/31/1999 |
+--------------+--------------+----------------+-------------+--------------------------------------+-------------+
关于sql - 在 Hive 0.13 中读取 CSV 文件,数据中也不带引号和逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42215151/