0
点赞
收藏
分享

微信扫一扫

Hive创建外部表CSV数据中列含有逗号问题处理

腾讯优测 2022-09-11 阅读 251

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​​https://github.com/fayson/cdhproject​​


提示:代码块部分可以左右滑动查看噢


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';

(可左右滑动)


查询结果显示:

Hive创建外部表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的表进行测试

Hive创建外部表CSV数据中列含有逗号问题处理_数据_02


2.使用get_json_object和json_tuple方法来解析字段的json数据

Hive创建外部表CSV数据中列含有逗号问题处理_数据_03

Hive创建外部表CSV数据中列含有逗号问题处理_数据_04



提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

Hive创建外部表CSV数据中列含有逗号问题处理_hive_05

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


举报

相关推荐

0 条评论