【问题标题】:Spark Map a DataSet with a function that generates other dataset and save in a new DatasetSpark 使用生成其他数据集并保存在新数据集中的函数映射数据集
【发布时间】:2018-03-15 14:15:00
【问题描述】:

我开始使用 Scala 和 Spark。目前,我使用一个 Rest 服务,并根据响应从 JSON 生成一个数据集,其结构如下:

|   id   |     name       |        key          |
+------- + -------------- + ------------------- +
| 128b16 | sample_project | uk.uda.proyect: ... |

从这个数据集中,我需要遍历它的行,并为每个“关键”元素使用另一个 Rest 服务(每行一个调用)并将所有行的响应保存在一个新数据集中,例如,像这样:

|   key  | value_1|value_2|value_n ... |
+ ------ + -------+------ + ---------- +
| 128b16 | xxxxxx |  xxxx | xxxx       |

请知道我是如何做到这一点的吗?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql spark-dataframe


    【解决方案1】:

    每当您将 JSON 响应保存到数据库中时,您都可以为 Kafka 或 RabbitMQ 等消息传递队列编写生产者脚本。

    然后您可以创建一个 spark 流作业来使用该消息,该消息可以只是“键”值或 JSON 响应中的整个数据集。您可以将这些结果保存到您想要的任何数据库中,无论是 RDMBS 还是 NOSQL 数据库。有非常好的连接器可以使工作变得非常简单。

    【讨论】:

    • 感谢您的回答,目前我没有将数据保存在数据库中,我获得了第一个响应并保存在 DataSet 中,因此我需要使用其他 Rest 服务 n 次(一次每个键行)。
    • 您不必将其保存在数据库中,您可以发送该消息而无需通过消息队列保存它。每次触发消息时,消费者(在本例中为 spark 流)从消费的消息中调用辅助休息服务。这可以是每行或整条消息的调用。
    猜你喜欢
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多