首页 > 解决方案 > 实时 Hive 数据转换?

问题描述

我有以下数据管道:

  1. 一个进程向 Kafka 写入消息
  2. Spark 结构化流应用程序正在侦听新的 Kafka 消息并将它们按原样写入 HDFS
  3. 批处理 Hive 作业每小时运行一次,并从 HDFS 读取新摄取的消息,并通过一些中等复杂的 INSERT INTO 语句填充一些表(我没有可用的物化视图)。编辑:基本上在我的 Hive 工作之后,我将结果Table1存储为原始数据,然后是另一个表Table2 = fun1(Table1),然后是Table3 = fun2(Table2),然后是Table4 = join(Table2, Table3)等等。Fun是一个选择或聚合。
  4. Tableau 仪表板将我编写的数据可视化。

如您所见,第 3 步使我的管道不是实时的。为了使我的管道完全实时,您有什么建议?编辑:我想要 Table1,... TableN 实时更新!

标签: hiveapache-kafkahdfsdashboardspark-structured-streaming

解决方案


  • 完全不建议将 Hive 与 Spark Streaming 一起使用。由于 Spark 流式传输的目的是具有低延迟。Hive 引入了可能的最高延迟 (OLAP),因为它在后端执行 MR/Tez 作业(取决于 hive.execution.engine)。

建议:将火花流与 HBASE、Phoenix 等低延迟数据库一起使用。

解决方案: 开发一个以 Kafka 为源的 Spark 流式作业,并使用自定义接收器将数据写入 Hbase/Phoenix。


推荐阅读