【发布时间】:2022-01-15 19:51:28
【问题描述】:
我遇到了一个问题。就我而言,这种行为是随机的。加载 hive 外部表并成功运行 msck repair(作业 1)后,我们有一个后续的 spark 作业,它从这些表中提取数据并加载到其他表(作业 2)。随机,Job 2 正在从 Job 1 中加载的表中检索 0 条记录。一些事实:
- 我们使用 select * 提取数据
- 我们使用 spark SQL 来执行此操作
- 我们在 Tez 引擎上运行 Hive
- 我们在 AWS EMR 上运行
- 行为纯属随机,我们无法识别 任何方式的模式
- 同一个表同一个查询在一段时间后给出正确的结果 然后再随意返回不返回任何记录。
这方面的任何帮助都会非常有帮助。我们一直在四处奔波,没有解决办法。
【问题讨论】:
-
使用 say select * 但是你的 where 子句呢?
-
您的表是在 S3 还是 HDFS 中?
-
你可以在作业 1 之后添加等待,然后再运行作业 2 吗?
-
@MattAndruff:我的答案 1) 有一个 where 子句选择该分区中的所有数据。 select 语句被验证可以工作,事实上它在某些工作的情况下做得很好,并且在其他工作的情况下获取零记录(为此我正在写这篇文章)。 2)我们的数据位于 S3 上。 3)最终,如果我们发现它是一个与时间相关的一致性问题,我们可能需要这样做,但现在最好不要这样做。我们仍在努力了解为什么会发生这种情况。
-
您找到问题了吗?
标签: apache-spark hive external-tables