代码之家  ›  专栏  ›  技术社区  ›  HISI

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

  •  0
  • HISI  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  1
  •   joel DeyaEldeen    7 年前
    val v = df_tables.map((r: Row) => hiveObj.sql("select * from database."+ r +" order by event_date"))
    

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