使用火花流从数据库流式读取
Posted
技术标签:
【中文标题】使用火花流从数据库流式读取【英文标题】:Stream reading from database using spark streaming 【发布时间】:2016-06-02 13:12:47 【问题描述】:我想使用 Spark Streaming 从 mysql 等 RDBMS 数据库中读取数据。
但我不知道如何使用 JavaStreamingContext 来做到这一点
JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.milliseconds(500));
DataFrame df = jssc. ??
我在互联网上搜索,但没有找到任何东西
提前谢谢你。
【问题讨论】:
【参考方案1】:如果不安装某些第三方软件,您将无法做到这一点。 您可以做的是创建一个个性化的接收器,它可以使用 SparkSQL 包和 Streaming 组合来满足您的需求。 实现一个扩展 Receiver 的类,并在内部执行从数据库中提取数据所需的所有连接和查询。 我现在正在工作,所以我给你一个链接来查看而不是生成代码,对不起:http://spark.apache.org/docs/latest/streaming-custom-receivers.htmlhttps://medium.com/@anicolaspp/spark-custom-streaming-sources-e7d52da72e80
【讨论】:
【参考方案2】:最好和可靠的解决方案是完全避免使用 MySqL。当您将记录插入 MySQl 时,通过事务将它们也放入 Kafka(Kafka 生产者),然后在您的流应用程序中使用它们。
【讨论】:
【参考方案3】:我认为不可能从 MySql 流式传输。可以从许多来源获取数据,例如 Kafka、Flume、Twitter、ZeroMQ、Kinesis 或 TCP 套接字。
【讨论】:
不,我想每 x 秒从我的数据库中选择最新数据。我确信这是可能的,但我是 spark 的新手,所以我不知道该怎么做 我已经在source和storm之间使用rabbitmq,但是storm应该把数据保存到我的数据库中,然后spark从数据库中读取数据来做他的工作 也无法在数据库和 spark 之间使用代理 同时使用 spark 和storm 是相当重复的。如果我不了解您的数据管道,则很难找到解决方案:) 我认为您应该使用 rabbitMQ 作为 spark 的输入并跳过 Storm 和 mysql。您可以使用github.com/Stratio/Spark-RabbitMQ。 MySQL可以输出spark。 现在storm和spark有很大的区别,Storm处理事件,spark使用微批处理,spark也有一些机器学习包。在我的用例中,storm从rabbitmq接收数据并组织这些数据,然后spark应该使用微批处理从数据库中读取来运行他的机器学习库。所以我必须使用火花流从数据库中读取以上是关于使用火花流从数据库流式读取的主要内容,如果未能解决你的问题,请参考以下文章
net.jpounz.lz4 使用火花流从 kafka 读取时出现异常