Scala 火花SQL合并
我使用sparksql从表中提取了coalesce值。然后,我将结果转换为字符串,以便将该值插入到另一个表中 但是,正在将合并的列名而不是合并值插入到表中 这些是我的合并和插入查询Scala 火花SQL合并,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我使用sparksql从表中提取了coalesce值。然后,我将结果转换为字符串,以便将该值插入到另一个表中 但是,正在将合并的列名而不是合并值插入到表中 这些是我的合并和插入查询 COALESCE: --------- val lastPartition = spark.sql("SELECT COALESCE(MAX(partition_name), 'XXXXX') FROM db1.table1").toString.mkString Result: ------
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列名。您需要使用
.head().getString(0)
来获取字符串作为变量。否则,如果使用.toString
,则会因为延迟计算而得到表达式
val lastPartition = spark.sql("SELECT COALESCE(MAX(partition_name), 'XXXXX') FROM db1.table1").head().getString(0)