【问题标题】:Pyspark - read periodically from an incremental hive tablePyspark - 从增量配置单元表中定期读取
【发布时间】:2021-12-22 11:10:01
【问题描述】:

我正在使用 pyspark 开发一个用例。 我的 pyspark 作业应该定期从 Hive 表中读取,并在其上应用一些聚合和转换。 但是我每次都无法阅读完整的表格,因为我需要将输出附加到另一个表格中。任何人都可以提出任何想法。我正在考虑的一种方法是在每个进程之后跟踪配置单元表的 rowId 或 rownum。 Ps:这不是流式用例

注意:我是 spark 新手。

谢谢, 阿尔宾

【问题讨论】:

  • 很抱歉,您无法阅读整个表格的原因尚不清楚。你能解释一下吗?
  • 意思是说您计算了一些聚合,但只想计算自上次运行以来添加的新值? (出于性能原因?)
  • @MattAndruff ,是的,我从中读取的表是增量表,我的 spark 作业应该定期(比如每 3 分钟)从此表中读取应用转换并保存到新表。我不应该阅读我已经处理过的行。

标签: apache-spark pyspark hive apache-spark-sql spark-streaming


【解决方案1】:

让我们分解问题。

  1. 创建两张表来替换现有的一张:
    1. 创建一个基表和一个增量表。
  2. 创建一个合并两个表的视图。 (用于为您提供截至“现在”的所有数据的完整视图。排除 “处理”视图中标记的数据。稍后我会解释原因。)
  3. 添加数据时,它会添加到增量表中。
  4. 何时开始处理数据:将增量表中的数据标记为“正在处理”
  5. 将“处理”数据复制到基表,并完成对聚合的任何所需处理/更新。
  6. 完成计算后,从增量表中删除“处理中”数据。

希望现在您可以从“现在”视图中排除标有“正在处理”的数据的原因。

【讨论】:

  • 感谢@matt-andruff,非常抱歉回复晚了。
猜你喜欢
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多