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 事务表的记录的主要内容,如果未能解决你的问题,请参考以下文章

无头模式下 HDP 3.1 上的 spark 3.x 与配置单元 - 未找到配置单元表

数据存储在对象存储中时从 Spark SQL 访问 Hive 表

Zeppelin:在 HDP3.0 中不显示 Hive 数据库/表

如何在不使用 HDP 3.1 中的仓库连接器的情况下将表从 spark 中写入 hive

将 Spark Dataframe 写入 HDP2.6 中的 Hive 可访问表

hdp3.1 hive 3.0的使用记录