【发布时间】:2020-07-10 22:26:04
【问题描述】:
df.withColumn(x, when($"x" > 75, $"x" + 10).otherwise($"x")).show()
org.apache.spark.sql.AnalysisException: cannot resolve '`x`' given input columns: [Name, Subject, Marks];;
'Project [Name#7, Subject#8, CASE WHEN ('x > 75) THEN ('x + 10) ELSE 'x END AS Marks#38]
scala> df.show()
+----+-------+-----+
|Name|Subject|Marks|
+----+-------+-----+
| Ram|Physics| 80|
|Sham|English| 90|
|Ayan| Math| 70|
+----+-------+-----+
scala> x
res6: String = Marks
我想传递一个变量作为参数并存储数据框的列值。并根据该参数检查条件、计算值并替换该数据框中具有相同名称的列。
实际上更大的问题是,有多个同名的列,例如 "col1","col2","col3".... 我会将这些列存储在一个数组中,并通过传递数据帧操作中的数组。但就目前而言。如果可以在 spark-scala 中处理,请告诉我问题的解决方案。
【问题讨论】:
-
我们可以关闭accepting the answer as owner?的线程
-
我已经添加了解决方案,你能检查一下并告诉我它是否不起作用.. :)
标签: scala dataframe apache-spark