Hive创建外部表CSV数据中列含有逗号问题处理
Posted Hadoop实操
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive创建外部表CSV数据中列含有逗号问题处理相关的知识,希望对你有一定的参考价值。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
提示:代码块部分可以左右滑动查看噢
1.问题描述
示例数据:
0098.HK,104,2018-10-21T22:20:00.105Z," ""BID3_SIZE"" : null, ""ASK10_SIZE"" : null, ""ASK10"" : null, ""ASK5_SIZE"" : null, ""BID9_SIZE"" : null, ""ASK8_SIZE"" : null, ""ASK_SIZE"" : null, ""BID6_SIZE"" : null, ""ASK2_SIZE"" : null, ""RT_MKT_STATUS"" : null, ""SEQUENCE_NUMBER"" : 104.0, ""BID4_SIZE"" : null, ""BID7_SIZE"" : null, ""ASK9_SIZE"" : null, ""ASK3_SIZE"" : null, ""ASK9"" : null, ""ASK6_SIZE"" : null, ""ASK7"" : null, ""ASK8"" : null, ""ASK5"" : null, ""ASK6"" : null, ""BID9"" : null, ""ASK3"" : null, ""BID8"" :null, ""ASK4"" : null, ""BID7"" : null, ""BID6"" : null, ""ASK2"" : null, ""BID5"" : null, ""BID4"" : null, ""BID3"" : null, ""BID2"" : null, ""LEVEL2"" : 1.0, ""BID1_SIZE"" : null, ""ASK7_SIZE"" : null, ""BID8_SIZE"" : null, ""ASK4_SIZE"" : null, ""BID10"" : null, ""BID10_SIZE"" : null, ""BID_SIZE"" : null, ""ASK1_SIZE"" : null, ""BID5_SIZE"" : null, ""BID2_SIZE"" : null "
(可左右滑动)
建表语句:
CREATE EXTERNAL TABLE csvtable2(
symbol string,
tickSequence string,
timeStamp string,
tickdata STRUCT< BID3_SIZE: string, ASK10_SIZE: string>
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ,
STORED AS TEXTFILE
LOCATION /mdtick/hk/csv;
(可左右滑动)
查询结果显示:
如上截图所示,tickdata的json数据并未完整显示,只显示了部分数据。
2.问题解决
在不能修改示例数据的结构情况下,这里需要使用Hive提供的Serde,在Hive1.1版本中提供了多种Serde,此处的数据通过属于CSV格式,所以这里使用默认的org.apache.hadoop.hive.serde2.OpenCSVSerde类进行处理。经过修改后的建表语句如下:
CREATE EXTERNAL TABLE csvtable2(
symbol string,
tickSequence string,
timeStamp string,
tickdata string
)
ROW FORMAT SERDE org.apache.hadoop.hive.serde2.OpenCSVSerde
WITH SERDEPROPERTIES (
"separatorChar" = ",",
"quoteChar" = "\\"",
"escapeChar" = "\\\\"
)
STORED AS TEXTFILE
LOCATION /mdtick/hk/csv;
(可左右滑动)
将tickdata字段修改为String类型
3.问题验证
1.重新创建Hive的表进行测试
2.使用get_json_object和json_tuple方法来解析字段的json数据
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
以上是关于Hive创建外部表CSV数据中列含有逗号问题处理的主要内容,如果未能解决你的问题,请参考以下文章
如何在 csv 文件中忽略带引号的换行符以创建 Hive 外部表?
如何在使用 EMR/Hive 将数据从 S3 导入 DynamoDB 时处理包含在引号 (CSV) 中的字段
如何在greenplum的报价字段中使用逗号从csv文件创建外部表?