我有此代码段,应为每个配置单元表创建数据框:
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")
答案 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
,您的代码也应该可以