【问题标题】:How to create Hive table for special formated data如何为特殊格式的数据创建 Hive 表
【发布时间】:2016-10-27 08:59:02
【问题描述】:

我有想要加载到 Hive 表中的文本文件。

数据格式如下

Id|^|SegmId|^|geographyId|^|Sequence|^|Subtracted|^|FFAction|!|
4295875876|^|3|^|110170|^|1|^|False|^|I|!|
4295876137|^|2|^|110170|^|1|^|False|^|I|!|
4295876137|^|8|^|100219|^|1|^|False|^|I|!|

我想在 Hive 中为此类数据创建一个表。

您能否建议如何为此创建表?

这是我尝试过但得到 null 的方法(也请向我们建议列的数据类型):

create table if not exists GeographicSegment 
(
    Id int,
    SegId int,
    geographyId int,
    Sequence int,
    Subtracted String,
    FFAction String
) row format delimited fields terminated by '|!|' LINES TERMINATED BY '\n' ;

【问题讨论】:

    标签: hadoop hive


    【解决方案1】:

    这对我有用

    行格式 SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="|^|") tblproperties

    【讨论】:

    • 当数据包含商标符号 (®) 等特殊字符时,该列的最后一个字符将被截断。
    【解决方案2】:

    您的字段似乎由'|^|' 终止,而您的行似乎由'|!|\n' 终止

    【讨论】:

      【解决方案3】:

      Hive 不支持多个字符作为分隔符,

      你可以在这里找到处理方法,

      Solution

      关于您所做的数据类型是正确的,除了第一列 ID。存在的值大于 INT 的范围。它可以是 BIGINT。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-04
        • 2021-01-11
        • 2014-12-09
        • 1970-01-01
        • 1970-01-01
        • 2017-09-24
        相关资源
        最近更新 更多