【发布时间】:2016-08-09 13:41:16
【问题描述】:
我正在尝试使用 Hive ALTER TABLE 语句将现有的 Hive 外部表分隔符从逗号 , 更改为 ctrl+A 字符
ALTER TABLE table_name SET SERDEPROPERTIES ('field.delim' = '\u0001');
在 DDL 之后我可以看到变化
show create table table_name
但是当我从 Hive 中选择时,这些值都是 NULL(HDFS 中的基础文件更改为具有 ctrl+A 分隔符)。
我也使用 msck 修复了表。
查看数据的唯一方法是删除并重新创建外部表,任何人都可以帮助我理解原因。
表格语法:
CREATE EXTERNAL TABLE `table_name`( col1, col2, col3) PARTITIONED BY ( `ing_year` int, `ing_month` int, `ing_day` int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 'hdfs://location/'
【问题讨论】:
-
“但是当我从 HDFS 中选择时,这些值都是 NULL”是什么意思?你的意思是
Hive或Impala吗? -
在 HIVE 中,Alter 表正在更改分隔符,但无法正确选择值。它返回 null。
-
查看创建表时使用的语句也会有所帮助
-
表是很久以前创建的,现在我正在尝试将分隔符从逗号更改为 ctrl+A。