首页 > 解决方案 > 从 CSV 分号分隔的数据在 HIVE 中创建表

问题描述

我是 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-sparkhadoophivehdfshiveddl

解决方案


是的,终止于某些配置单元版本(如 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;

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


推荐阅读