【问题标题】: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. ??

我在互联网上搜索,但没有找到任何东西

提前谢谢你。

【问题讨论】:

    标签: java mysql apache-spark spark-streaming spark-dataframe


    【解决方案1】:

    如果不安装某些第三方软件,您将无法做到这一点。
    您可以做的是创建一个个性化的接收器,它可以使用 SparkSQL 包和 Streaming 组合来满足您的需求。
    实现一个扩展 Receiver 的类,并在内部执行从数据库中提取数据所需的所有连接和查询。
    我现在正在工作,所以我给你一个链接来查看而不是生成代码,对不起:
    http://spark.apache.org/docs/latest/streaming-custom-receivers.html
    https://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应该使用微批处理从数据库中读取来运行他的机器学习库。所以我必须使用火花流从数据库中读取
        猜你喜欢
        • 2018-08-20
        • 2019-02-14
        • 2023-03-18
        • 1970-01-01
        • 2018-12-30
        • 2017-04-16
        • 2017-04-05
        • 1970-01-01
        • 2019-11-13
        相关资源
        最近更新 更多