实时进行数据转换?

问题描述 投票:1回答:2

我有以下数据管道:

  1. 进程将消息写入Kafka
  2. Spark结构化的流应用程序正在侦听新的Kafka消息并将它们照原样写入HDFS
  3. 批处理Hive作业每小时运行一次,并从HDFS中读取新摄取的消息,并通过一些中等复杂的INSERT INTO语句填充一些表(我没有可用的实例化视图)。 EDIT:本质上,在Hive工作之后,我得到的结果是[[Table1存储原始数据,然后是另一个表Table2 = fun1(Table1),然后是Table3 = fun2(Table2) ,然后Table4 = join(Table2,Table3),依此类推。Fun是选择或聚集。
  4. Tableau仪表板可以可视化我编写的数据。
  • 您可以看到,第3步使我的管道不是实时的。您可以建议我什么,以使我的管道完全实时?

    编辑:我想让Table1,... TableN实时更新!

  • hive apache-kafka hdfs dashboard spark-structured-streaming
    2个回答
    0
    投票
    引入HDFS显然不是实时的。 MemSQL或Druid / Imply提供了更多来自Kafka的实时摄取

    您需要历史数据来执行汇总和汇总。 Tableau可能会缓存数据集,但它本身不会永久存储。因此,您需要

    某些存储空间,并且选择使用HDFS而不是数据库。

    注意:Hive / Presto可以直接从Kafka阅读。因此,您甚至根本不需要Spark。

    [如果您想从Kafka滚动汇总并使其可查询,则可以使用KSQL,或者您可以编写自己的Kafka Streams解决方案


    0
    投票
      完全不建议将Hive与Spark Streaming一起使用。因为Spark流式传输的目的是具有低延迟。 Hive引入了可能的最高延迟(OLAP),因为它在后端执行MR / Tez作业(取决于hive.execution.engine)。
  • 推荐:将火花流与诸如HBASE,Phoenix之类的低延迟数据库一起使用。

    解决方案:

    使用Kafka作为源开发Spark流作业,并使用自定义接收器将数据写入Hbase / Phoenix。
  • © www.soinside.com 2019 - 2024. All rights reserved.