专栏首页Hadoop实操Hive创建外部表CSV数据中列含有逗号问题处理

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

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

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实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何使用curl命令调用CM的API动态配置Yarn资源池

    在使用CDH集群大数据平台过程中,用户会有需求在自己的统一管理平台上通过API接口能够动态的设置Yarn资源池,Cloudera Manager提供了丰富的AP...

    Fayson
  • 如何使用Java调用CM的API动态配置Yarn资源池

    用户在使用CDH集群大数据平台时会有需求在自己的统一管理平台上通过API接口能够动态的设置Yarn资源池,Cloudera Manager提供了丰富的API接口...

    Fayson
  • 0640-6.1.1-Hue上SQL查询结果显示不全异常分析-补充

    2.准备数据并导入到该Hive表中,注意我们准备的数据第四个字段即s4的值特别长,约有5000多个字符。

    Fayson
  • Vue + Element UI 实现权限管理系统 前端篇(九)

    前台显示需要后台数据,我们这里先把前后端交互接口定义好,没有后台的时候,也方便用mock模拟。

    朝雨忆轻尘
  • dart 如何优雅的避空

    对于每一个程序员来说,空指针异常应该是基本都会遇到过的异常,而且这个异常出现的概率还比较大。

    AndroidTraveler
  • 测者的测试技术手册:Java中的null类型

    null是一个非常非常特殊的类型,对于每一个测试人员都要十分小心null的存在的可能性。同时null也让很多RD头疼,甚至连Java的设计者都成人null是一个...

    Criss@陈磊
  • Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留nul...

    哲洛不闹
  • JTable常见用法细则+设置某列可编辑+滚动表格

    JTable常见用法细则 JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一. 创建表...

    YGingko
  • 如何使用curl命令调用CM的API动态配置Yarn资源池

    在使用CDH集群大数据平台过程中,用户会有需求在自己的统一管理平台上通过API接口能够动态的设置Yarn资源池,Cloudera Manager提供了丰富的AP...

    Fayson
  • Android开发 - 处理 null 和 预防空指针异常(NullPointerException) 的一些经验

    比如: 通过intent传参到新的目标 activity,而且一定需要这个参数,那么在新的目标activity中 onCreate方法中 判断中这个参数,如果n...

    zhangyunfeiVir

扫码关注云+社区

领取腾讯云代金券