Apache spark 如何将Spark SQL批处理作业结果写入Apache Druid?

Apache spark 如何将Spark SQL批处理作业结果写入Apache Druid?,apache-spark,apache-spark-sql,druid,Apache Spark,Apache Spark Sql,Druid,我想将Spark批处理结果数据写入ApacheDruid。我知道德鲁伊有本地批量摄取,比如index\u parallel。Druid在同一集群中运行Map Reduce作业。但我只想把德鲁伊用作数据存储。我想在Spark集群外部聚合数据,然后将其发送到Druid集群 德鲁伊拥有实时摄食的宁静。我可以使用宁静发送批处理数据,但这并不高效。如何有效地将批处理结果发送给德鲁伊 您可以写入卡夫卡主题,并运行卡夫卡索引作业对其进行索引 我们一直在使用这种机制来索引数据,但在这方面没有对windowPer

我想将Spark批处理结果数据写入ApacheDruid。我知道德鲁伊有本地批量摄取,比如
index\u parallel
。Druid在同一集群中运行Map Reduce作业。但我只想把德鲁伊用作数据存储。我想在Spark集群外部聚合数据,然后将其发送到Druid集群


德鲁伊拥有实时摄食的宁静。我可以使用宁静发送批处理数据,但这并不高效。如何有效地将批处理结果发送给德鲁伊

您可以写入卡夫卡主题,并运行卡夫卡索引作业对其进行索引

我们一直在使用这种机制来索引数据,但在这方面没有对windowPeriod的限制。它需要更旧的时间戳。但如果一个碎片已经定稿,那么最终会在同一个片段中创建新的碎片

e、 g.如果我使用的是白天大小的片段,我将使用该片段中的碎片 段-11-11-2019-1 100MB 段-11-11-2019-2 10MB(用于11月12日收到的数据,事件时间为11月11日)

使用压缩,这两个碎片将在启用自动压缩的情况下合并


或者简单地说,您可以在HDFS中累积结果,然后使用cron作业使用Hadoop批处理摄取。自动压缩也适用于此选项

你可以配置德鲁伊听卡夫卡主题。Spark为u提供了一个向卡夫卡写入的连接器。另一种方式。。您可以将您的spark作业的输出写入拼花或json文件。Druid可以进行本地摄取(您需要将文件复制到Druid节点之一),或者您可以使用HDFSKafka选项进行批量摄取,这并不好。因为,事件时间通常早于windowPartition。另一个选择似乎不错。我可以将结果作为拼花格式写入德鲁伊的HDFS,然后创建一个HDFS索引,将拼花转换为段。这似乎是一个很好的结果,因为数据已经聚合,只需将其转换为段。这似乎比其他选项消耗更少的资源。对吗?HDFS方式是最快、最有效的方式。你只需要把拼花地板放进HDF,然后把位置告诉德鲁伊。顺便说一句,这种摄取方式替换了druid中现有的数据段,因此确保你摄取了完整的数据,而不仅仅是增量行。另一方面,卡夫卡——只摄取三角洲行很有效;顺便说一句,从你的回复中,我不明白
窗口分区
——请详细说明。哦,对不起。我试着说
窗口期
。在实时摄取中,德鲁伊希望有一个窗口期。如果所接收事件的任何时间超出指定窗口,则忽略此事件。因此,批处理分析的时间结果总是超出窗口期(我假设窗口期为10分钟,不能太大,这就足够了)。