Scala-使用Scala反射的动态代码生成

Scala-使用Scala反射的动态代码生成,scala,apache-spark,dataframe,eval,spark-dataframe,Scala,Apache Spark,Dataframe,Eval,Spark Dataframe,我有一个需求,需要向spark数据帧添加多个列 我正在使用dataframe.withColumn添加新列。我希望代码在运行时动态生成,因为要添加的新列是由用户在运行时定义的 我在下面的链接中使用Eval.scala进行动态执行 鳞片评估 以下代码有效: val df: DataFrame = sqlContext.read.load("somefile.parquet") val schema = StructType( StructField("k", StringTy

我有一个需求,需要向spark数据帧添加多个列

我正在使用
dataframe.withColumn
添加新列。我希望代码在运行时动态生成,因为要添加的新列是由用户在运行时定义的

我在下面的链接中使用
Eval.scala
进行动态执行

鳞片评估

以下代码有效:

val df: DataFrame = sqlContext.read.load("somefile.parquet")    
  val schema = StructType(
    StructField("k", StringType, true) ::
      StructField("v", IntegerType, false) :: Nil)
 //Create Empty DataFrame
  var df2: DataFrame = sqlContext.createDataFrame(sc.emptyRDD[Row], schema)     
//Add new column
Eval[Unit](s"${df2 = df.withColumn("""Segment""", lit("""SOFT DRINKS"""))}")
//Displays the dataframe content
df2.show
当我尝试将上面的代码构建为字符串并将其传递给Eval时,它失败了

var strDF: String= "df2 = df.withColumn(" + """"Segment"""" + ", lit(" + """"SOFT DRINKS"""" + "))"
Eval[Unit](s"${strDF}")
上述代码失败,因为“未找到:值df2”


我在这里做错了什么?

我想问题源于将字符串解析为输入以进行评估。检查eval的解析实现不应该是
val df2=df。在列(…
?@LiMuBei中,我已经声明了df2并填充了空数据帧。