sql - 使用 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" } }
解决方案
您可以使用map
spark 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 上运行此查询。
其他资源:
让我知道这是否适合您。
推荐阅读
- c# - 创建自定义文件扩展名时,是否可以为其分配与应用程序图标不同的图标?
- c - fprintf() 以文本格式写入数据,无论我在 fopen() 中使用何种模式打开文件
- powershell - 使用原始构造函数扩展加速的 .Net 类
- c# - asp.net Identity Roles 组织单元结构创建
- android - 当我回到上一个视图 ViewPager2 时,ExoPlayer 没有播放 onViewRecycled
- javascript - 如何在 ejs 视图中访问 js 变量(在脚本标签内)作为 ejs 变量
- java - 如何在 Android 中避免单例
- php - Razorpay:BAD_REQUEST_ERROR 请提供您的 api 密钥以进行身份验证
- postgresql - 如何在不丢失数据的情况下控制数据库版本,更像是 github
- sql - 如何在 SELECT 查询中间进行调试?