【问题标题】:Create table in HIVE from CSV semicolon delimited data从 CSV 分号分隔的数据在 HIVE 中创建表
【发布时间】:2021-02-08 05:33:09
【问题描述】:

我是 HIVE 的新手,这是我第一次接触它

这是我的数据样本

年龄;“工作”;“婚姻”;“教育”;“默认”;“余额”;“住房”;“贷款”;“联系人”;“日”;“月”;“持续时间”;“活动";"pdays";"以前的";"poutcome";"y" 58;“管理”;“已婚”;“高等教育”;“否”;2143;“是”;“否”;“未知”;5;“可能”;261;1;-1;0;“未知” ;“不” 44;“技术员”;“单身”;“次要”;“否”;29;“是”;“否”;“未知”;5;“可能”;151;1;-1;0;“未知” ;"没有"

我尝试使用以下命令创建表:

create external table bank_dataset(age TINYINT, job string, education string, default BOOLEAN, balance INT, housing BOOLEAN, loan BOOLEAN, contact STRING,day STRING, month STRING, duration INT,campaign INT, pdays INT, previous INT, poutcome STRING,y BOOLEAN)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\;'
location '/user/user_name/Bank_Project';

我创建了表,然后我在其上运行的任何查询(除了 select * from table)都会产生错误。

我认为它与“;”有关数据之间。

有什么建议吗?

【问题讨论】:

    标签: apache-spark hadoop hive hdfs hiveddl


    【解决方案1】:

    是的,终止于是某些配置单元版本(如 Asure)中的问题。请使用FIELDS TERMINATED BY '\u0059' 而不是';'。

    create external table bank_dataset(age TINYINT, job string, education string, default BOOLEAN, balance INT, housing BOOLEAN, loan BOOLEAN, contact STRING,day STRING, month STRING, duration INT,campaign INT, pdays INT, previous INT, poutcome STRING,y BOOLEAN)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\u0059'
    location '/user/user_name/Bank_Project';
    STORED AS TEXTFILE;
    

    请注意,在更高的 hive 版本上,'\u003B' 可能有效。分号 (;) 的 Unicode 代码点是 U+003B,因此第二种解决方案更有意义。但我认为 hive 假设 0059 为十进制并解释为';'。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2015-11-07
      • 2014-06-11
      相关资源
      最近更新 更多