luc*_*ucy 5 hadoop hive scala apache-spark spark-streaming
我正在创建一个应用程序,其中获取进入 kafka 然后进入 spark 的流数据。消费数据,应用一些登录,然后将处理过的数据保存到配置单元中。数据速度非常快。我在 1 分钟内获得了 50K 条记录。火花流中有 1 分钟的窗口,它在其中处理数据并将数据保存在配置单元中。
我的问题是生产前瞻性架构好吗?如果是,我如何将流数据保存到配置单元中。我正在做的是,创建 1 分钟窗口数据的数据框,并使用
results.write.mode(org.apache.spark.sql.SaveMode.Append).insertInto("stocks")
Run Code Online (Sandbox Code Playgroud)
我还没有创建管道。可以吗,还是我必须修改架构?
谢谢
小智 7
我会试一试的!
但是 kafka->spark->hive 不是您用例的最佳管道。
建议:
选项 1: - 将 kafka 用作缓冲区队列并设计您的管道,例如 - kafka->hdfs(例如使用 spark 或水槽)->batch spark to hive/impala table
选项 2:
选项 1 没有“实时”分析选项。这取决于您运行批处理 spark 的频率
option2 是我推荐的一个不错的选择,在 hbase 中存储 30 天,在 hive/impala 中存储所有较旧的数据。通过视图,您将能够连接新旧数据以进行实时分析。Kudu 使架构变得更加容易。
如果您喜欢对数据进行分区并通过 HIVEsql 使用它,那么将数据保存到 hive 表中可能会很棘手。
但基本上它会像下面这样工作:
xml.write.format("parquet").mode("append").saveAsTable("test_ereignis_archiv")
Run Code Online (Sandbox Code Playgroud)
BR