在一个类中实现案例类

时间:2019-07-10 14:17:53

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

我正在使用以下代码在Qubole Notebook中运行,并且代码已成功运行。

case class cls_Sch(Id:String, Name:String)
class myClass { 
    implicit val sparkSession = org.apache.spark.sql.SparkSession.builder().enableHiveSupport().getOrCreate()
    sparkSession.sql("set spark.sql.crossJoin.enabled = true")
    sparkSession.sql("set spark.sql.caseSensitive=false")   
    import sparkSession.sqlContext.implicits._
    import org.apache.hadoop.fs.{FileSystem, Path, LocatedFileStatus, RemoteIterator, FileUtil}
    import org.apache.hadoop.conf.Configuration 
    import org.apache.spark.sql.DataFrame

    def my_Methd() {                

        var my_df = Seq(("1","Sarath"),("2","Amal")).toDF("Id","Name")      

        my_df.as[cls_Sch].take(my_df.count.toInt).foreach(t => {            

            println(s"${t.Name}")

        })              
    }
}
val obj_myClass = new myClass()
obj_myClass.my_Methd()

enter image description here

但是,当我在Qubole的Analyze中以相同的代码运行时,出现以下错误。

enter image description here

当我取出下面的代码时,它在Qubole的Anlayze中运行良好。

my_df.as[cls_Sch].take(my_df.count.toInt).foreach(t => {            

            println(s"${t.Name}")

        })

我相信我必须在某个地方更改case类的用法。

我正在使用Spark 2.3。

有人可以让我知道如何解决此问题。

如果您需要其他详细信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

由于任何原因,内核在使用数据集时都会发现问题。我做了两个与Apache Toree一起使用的测试:

enter image description here

答案 1 :(得分:0)

您要做的就是在my_Methd()函数中包含import spark.implicits._

def my_Methd() {   

    import spark.implicits._     

    var my_df = Seq(("1","Sarath"),("2","Amal")).toDF("Id","Name")      

    my_df.as[cls_Sch].take(my_df.count.toInt).foreach(t => {            

        println(s"${t.Name}")

    })              
}