【问题标题】:Apache Spark: Save results to a databaseApache Spark:将结果保存到数据库
【发布时间】:2016-01-29 15:46:27
【问题描述】:

我目前正在试用 Spark 流式传输。我已经能够获得所需的结果,但现在我只是在终端上打印:

myResults.print()

将结果打印到终端。

我想要实现的是类似于this 的架构。

有没有办法将这些结果写入数据库中的表。 我该怎么做?我应该使用哪个数据库?

【问题讨论】:

    标签: scala hadoop apache-spark bigdata spark-streaming


    【解决方案1】:

    我应该使用哪个数据库?

    这完全取决于您对数据的处理要求,一旦数据被持久化到磁盘上。您可以选择任何适合您需要的数据库,从 Mysql、Oracle、MongoDB 等。或者您可以将其保存到 Hadoop 文件系统。

    我该怎么做?

    您可以使用 Spark Map 函数遍历所有数据并插入到您选择的数据库中。喜欢

        statuses.foreach(new VoidFunction<String>() {
            @Override
            public Void call(String s) throws Exception {
                //You Code to parse the String and insert into the database of your choice.
            }
        });
    

    希望有帮助

    【讨论】:

    • 感谢您的回复。我正在使用 scala 并且我已经选择了 Cassandra。但是当我运行此代码时,我遇到了错误。你能看看吗? scala> val collection = sc.parallelize(Seq(("cat", 30), ("fox", 40))) 集合:org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[6 ] 在 :22 scala> 处并行化 collection.saveToCassandra("test", "words", SomeColumns("word", "count")) 错误:值 saveToCassandra 不是 org.apache.spark.rdd 的成员.RDD[(String, Int)]
    • 我认为我的建议是固定的。如果你愿意,我可以再写一个问题?
    • Spark 发行版没有内置 saveToCassandra。我认为您缺少 Spark Cassandra 连接器库。使用包含 Cassandra 连接器的包启动 spark shell。如此链接所示。spark-packages.org/package/datastax/spark-cassandra-connector.
    • 为什么要使用“地图”功能?你不是在这里映射任何东西,而是对数据执行操作?
    【解决方案2】:

    我该怎么做

    使用foreachPartition 并编写一个VoidFunction 以保存到您选择的数据源。

    我应该使用哪个数据库?

    你有什么玩的?您打算如何处理这些数据?一根绳子有多长?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多