火花温度表问题,表不存在?如何解决



Env: Spark 1.6, Scala

你好
我创建了一个空的数据帧[会话趋势],并使用现有数据帧[DF2,从SQL Server数据库表创建]进行了联合,结果数据帧,会话趋势工作正常。但是在将会话趋势数据帧注册为临时表后,由于错误表而无法执行选择语句。

val schemaRDD = StructType(
    StructField("SessionCount", IntegerType, true) ::
    StructField("SampleTime", TimestampType, false) ::
    StructField("Program_ID", IntegerType, true) :: Nil)
  var sessionTrend = sqlcontext.createDataFrame(sc.emptyRDD[Row], schemaRDD)
val run_id_q= new Queue[Int]  

for (i <- 1 to 10)
{
     run_id_q += i
    sessionTrend = sessionTrend.unionAll(DF2)  // DF2 is a data set with same schema as sessionTrend 
    if (run_id_q.length >=3) {
      v_run_id = run_id_q.dequeue()
           sessionTrend = sessionTrend.filter(sessionTrend("run_id")>v_run_id)
    }
sessionTrend.show() // working fine and displaying expected result
sessionTrend.registerTempTable("memTBL")
val myData= hivecontext.sql("select * from memTBL") // ERROR: Table memTBL does not exit
}

有什么建议可以解决这个问题吗?实际上,我正在尝试创建一个始终具有最新 3 条记录的数据帧。

谢谢
侯赛因

因为您的数据帧sessionTrend是从sqlContext创建的

var sessionTrend = sqlcontext.createDataFrame(sc.emptyRDD[Row], schemaRDD)

以及您尝试使用 hiveContext 访问临时表 .使用 hiveContext 创建数据帧或使用 sqlContext 访问表,如下所示。

val myData= sqlContext.sql("select * from memTBL")

基本上,关键是您应该将它们中的任何一个用于操作,而不是混合使用它们。

相关内容

  • 没有找到相关文章

最新更新