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