【发布时间】:2022-04-03 22:09:09
【问题描述】:
我有一个包含两列 col1 和 col2 的 DataFrame(Spark 2.2.0 和 Scala 2.11)。我需要按以下格式创建一个新列:
=path("http://mywebsite.com/photo/AAA_BBB.jpg", 1)
其中AAA 是col1 的值,BBB 是给定行的col2 的值。
问题是我不知道如何正确处理"。我试过这个:
df = df.withColumn($"url",=path("http://mywebsite.com/photo/"+col("col1") + "_"+col("col2")+".jpg", 1))"
更新:
现在可以编译了,但是列值没有插入到字符串中。我看到的不是列值,而是 col1 和 col2 文本。
df = df.withColumn("url_rec",lit("=path('http://mywebsite.com/photo/"+col("col1")+"_"+col("col1")+".jpg', 1)"))
我明白了:
=path('http://mywebsite.com/photo/col1_col1.jpg', 1)
【问题讨论】:
-
你试过在中间转义引号吗?比如 "=path(\"mywebsite.com/photo"
-
@Fabich:请查看我的更新。我能够编译代码。但是当我运行它时,我得到的字符串没有插入这些字符串中的列的值。
-
如果你想为每一行更改它,你将不得不一个接一个地使用多个
concat。 -
@philantrovert:好的,我明白了。现在它起作用了。谢谢。您能否将您的建议放入答案中?
标签: scala apache-spark spark-dataframe