分享免费的编程资源和教程

网站首页 > 技术教程 正文

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

goqiw 2024-09-17 19:24:16 技术教程 49 ℃ 0 评论

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

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

(可左右滑动)

查询结果显示:

如上截图所示,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实操

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表