hadoop - hive 在分区表上添加列不起作用

标签 hadoop hive hiveql partition

我分享了在分区 hive 表上添加列的经验。
如您所见,尽管有 CASCADE 功能,但 ALTER 还是让我的 table 刹车:(

在分区表上添加列

表说明

CREATE TABLE test (
a                       string,      
b                       string,
c                       string
)
PARTITIONED BY (
x                       string,
y                       string, 
z                       string
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
TBLPROPERTIES (
'orc.compress'='SNAPPY'
);

复制表格
CREATE TABLE test_tmp...

hadoop distcp hdfs://.../test/* dfs://.../test_tmp

MSCK REPAIR TABLE test_tmp;

SELECT * FROM test_tmp
LIMIT 100

check : OK (I get results)



修改表格
ALTER TABLE test_tmp
ADD COLUMNS(
aa  timestamp,
bb  string,
cc  int,
dd  string
) CASCADE;

SELECT * FROM test_tmp
LIMIT 100

...
]], Vertex did not succeed due to OWN_TASK_FAILURE, failedTasks:1 killedTasks:19, Vertex vertex_1502459312997_187854_4_00 [Map 1] killed/failed due to:OWN_TASK_FAILURE]DAG did not succeed due to VERTEX_FAILURE. failedVertices:1 killedVertices:0
... 1 statement(s) executed, 0 rows affected, exec/fetch time: 21.655/0.000 sec  [0 successful, 1 errors]

check : KO (I get this error)

最佳答案

如果您使用的是 Hive 0.x 或 1.x,那么您可能是...的受害者

HIVE-10598   Vectorization borks when column is added to table.



...这是特定于 ORC 格式的,即使它在 JIRA 标签中并不明显。

从 Hive 2.0 开始有部分修复(即 ADD 已修复,但 DROP/RENAME/CHANGE 仍然残缺不全)感谢

HIVE-11981   ORC Schema Evolution Issues (Vectorized, ACID, and Non-Vectorized)



以及从 Hive 2.1.1 开始的另一个相关修复 CHANGE

HIVE-14355   Schema evolution for ORC in llap is broken for Int to String conversion



待续...

关于hadoop - hive 在分区表上添加列不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45676155/

相关文章:

amazon-web-services - AWS Athena MSCK REPAIR TABLE对于小型数据集而言花费的时间太长

hadoop - Hadoop/Hive-将单行拆分为多行

mysql - 通过连接提高Hive查询的性能

hadoop - 大 gz 文件上的 Mapreduce

hadoop - PIG - 将输入日期转换为 UTC 时区

apache-spark - SparkSQL、Thrift Server 和 Tableau

hadoop - 在 Hive 中将字符串转换为时间戳

hadoop - 当嵌套在子查询中时,Hive UDF给出重复的结果而不管参数如何

hadoop - Apache Giraph 中具有复杂值的顶点

hadoop - 如何在 Spark 上运行 rdd.map 函数后获取 rdd(如何使用 rdd.insertInto)