首页 > 解决方案 > 使用 hive 中的 spark 将数据推送到 mongoDB

问题描述

我想使用 sql 查询从 hive 中提取数据,将其转换为嵌套数据框,然后使用 spark 将其推送到 mongodb。任何人都可以提出一种有效的方法来做到这一点。

eg: 平面查询结果 --> {"columnA":123213 ,"Column3 : 23,"Column4" : null,"Column5" : "abc"}

要推送到 mongo 的嵌套记录 --> { "columnA":123213, "newcolumn" : { "Column3 : 23, "Column4" : null, "Column5" : "abc" } }

标签: sqlmongodbdataframeapache-sparkhive

解决方案


您可以使用mapspark sql 中的函数来实现所需的转换,例如

df.selectExpr("ColumnA","map('Column3',Column3,'Column4',Column4,'Column5',Column5) as newcolumn")

或者您可以在创建临时视图后在 Spark 会话中运行以下命令

df.createOrReplaceTempView("my_temp_view")
sparkSession.sql("<insert sql below here>")
SELECT
    ColumnA,
    map(
        "Column3",Column3,
        "Column4",Column4,
        "Column5",Column5
    ) as newcolumn
FROM 
   my_temp_view

此外,如果这是您希望使用的唯一转换,您也可以在 hive 上运行此查询。

其他资源:

让我知道这是否适合您。


推荐阅读