我使用sparksql从表中提取了coalesce值。然后我将结果转换为字符串,以便将该值插入到另一个表中。
但是,coalesce的列名将被插入到表中,而不是coalesce值。
这些是我的合并和插入查询,
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
这里,我希望column(col3)的值是20210309,而不是coalesce列名。
1条答案
按热度按时间dohp0rv51#
你需要使用
.head().getString(0)
获取字符串作为变量。否则,如果你使用.toString
,您将得到表达式,而不是因为延迟求值。