Spark SQL 未返回 HDP 上 HIVE 事务表的记录

Posted

技术标签:

【中文标题】Spark SQL 未返回 HDP 上 HIVE 事务表的记录【英文标题】:Spark SQL is not returning records for HIVE transactional tables on HDP 【发布时间】:2016-03-12 08:58:14 【问题描述】:

我在 HDP 设置上遇到了这个问题,在该设置上,事务表只需要一次 COMPACTION 才能使用 Spark SQL 获取记录。 另一方面,Apache 设置甚至不需要压缩一次。

可能是压缩后在元存储上触发了某些东西,Spark SQL 开始识别增量文件。

如果需要其他详细信息来找出根本原因,请告诉我。

试试这个,

查看完整场景:

hive> create table default.foo(id int) clustered by (id) into 2 buckets STORED AS ORC TBLPROPERTIES ('transactional'='true');
hive> insert into default.foo values(10);

scala> sqlContext.table("default.foo").count // Gives 0, which is wrong because data is still in delta files

#Now run major compaction:

hive> ALTER TABLE default.foo COMPACT 'MAJOR';

scala> sqlContext.table("default.foo").count // Gives 1

hive> insert into foo values(20);

scala> sqlContext.table("default.foo").count // Gives 2 , no compaction required.

【问题讨论】:

出于好奇,您是否曾经提交过 INSERT?你show locks检查你是否有待处理的事务锁? 在蜂巢中提交?是的,显示锁不显示任何东西。 【参考方案1】:

Spark 不支持 hive 跨国表的任何功能。

请查看:https://issues.apache.org/jira/browse/SPARK-15348

【讨论】:

您应该改进答案以从您的链接中引用相关信息。

以上是关于Spark SQL 未返回 HDP 上 HIVE 事务表的记录的主要内容,如果未能解决你的问题,请参考以下文章