scala - Spark SQL 合并
问题描述
我已经使用 Spark SQL 从表中提取了合并值。然后我将结果转换为字符串,以便我可以将该值插入到另一个表中。
但是, COALESCE 的列名被插入到表中,而不是合并值。
这些是我的 COALESCE 和 INSERT 查询,
COALESCE:
---------
val lastPartition = spark.sql("SELECT COALESCE(MAX(partition_name), 'XXXXX') FROM db1.table1").toString.mkString
Result:
-------
COALESCE(MAX(partition_name),XXXXX
20210309
INSERT:
-------
val result = spark.sql(s"""INSERT INTO db2.table2 VALUES ('col1','col2','${lastPartition}','col4')""")
Result:
--------
col1 col2 col3 col4
1 John [COALESCE(MAX(partition_name),XXXXX):string] 15313.21
在这里,我希望列 (col3) 的值为 20210309 而不是合并列名。
解决方案
您需要使用.head().getString(0)
来获取字符串作为变量。否则,如果你使用.toString
,你会因为惰性求值而得到表达式。
val lastPartition = spark.sql("SELECT COALESCE(MAX(partition_name), 'XXXXX') FROM db1.table1").head().getString(0)
推荐阅读
- sql - POSTGRESQL 限制给定条件的结果查询
- reactjs - 为 cookie 管理创建单独的反应组件
- javascript - 检查值等于数组中的特定值 - javascript
- ms-word - 通过 VBA 更新 WORD 2016 中图片的多个源链接
- excel - Excel VBA:如何在同一列中交换两个选定的单元格范围(不仅仅是两个值)?
- facebook - 从“自己的”Facebook 页面的时间线中阅读公开帖子 - Pages API 需要审核和业务验证
- google-chrome - 谷歌浏览器对 URL 中“#”的新处理将如何影响我的 OpenUI5 应用程序?
- hyperledger-fabric - 从没有互联网连接的机器运行“composer network upgrade”时出现“RESOURCE_EXHAUSTED”错误
- php - PHP:将字符串转换为数组
- c# - 检索 XSD 中可选元素的默认值