【发布时间】:2019-02-27 03:01:38
【问题描述】:
我有一个包含两列的数据框:
id(字符串),日期(时间戳)
我想遍历数据框,并添加一个带有 url 的新列,其中包括 id。该算法应如下所示:
add one new column with the following value:
for each id
"some url" + the value of the dataframe's id column
我试图在 Scala 中完成这项工作,但在获取“a”索引上的特定 id 时遇到问题
val k = df2.count().asInstanceOf[Int]
// for loop execution with a range
for( a <- 1 to k){
// println( "Value of a: " + a );
val dfWithFileURL = dataframe.withColumn("fileUrl", "https://someURL/" + dataframe("id")[a])
}
但是这个
dataframe("id")[a]
不适用于 Scala。我还没有找到解决方案,所以欢迎各种建议!
【问题讨论】:
-
你还需要一个循环吗?
df2.withColumn("fileUrl", "https://someURL/" + $"id")可能有用吗? -
您想添加与行一样多的列吗?这根本无法扩展,如果您不需要它可扩展,则没有理由使用 Spark DataFrame...
-
所以@zacdav的解决方法抛出如下错误:error: type mismatch;发现:需要字符串:org.apache.spark.sql.Column 我在 Databricks 笔记本中工作,也许它以不同的方式工作?我也试着调查一下……
-
顺便说一句,@eliasah,不,我只想添加一个带有 url 的列,其中 id 添加到链接中,id 来自第一列。
-
那么你的伪代码是错误的,因为它就是这样做的。
标签: scala apache-spark for-loop calculated-columns databricks