错误标量:递归值变量需要类型

时间:2018-07-26 15:21:19

标签: scala apache-spark apache-spark-sql

我有此代码段,应为每个配置单元表创建数据框:

for (e <- df_tables) {
    val v(df_tables.indexOf(e)) = hiveObj.sql("select * from database."+ e +" order by event_date")
}

df_tables是一个数据框,而v是我为这些数据框选择的名称数组。

df_tables: Array[org.apache.spark.sql.Row] = Array([conversionevents], [elements], [pageviews], [productviews], [registrations], [sitepromotionclicks])

运行此代码时出现两个错误:

<console>:145: error: recursive value e needs type
                  val v(df_tables.indexOf(e)) = hiveObj.sql("select * from database."+ e +" order by event_date")
                                                                                              ^
<console>:145: error: value v is not a case class constructor, nor does it have an unapply/unapplySeq method
                  val v(df_tables.indexOf(e)) = hiveObj.sql("select * from database."+ e +" order by event_date")

1 个答案:

答案 0 :(得分:1)

val v = df_tables.map((r: Row) => hiveObj.sql("select * from database."+ r +" order by event_date"))

我怀疑所有问题都是由于尝试使用val v(df_tables.indexOf(e))在每次迭代中创建一个值引起的。如果您删除了val,您的代码也应该可以