Scala-使用Scala反射的动态代码生成
我有一个需求,需要向spark数据帧添加多个列 我正在使用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
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并填充了空数据帧。