0

以下のコードを使用して 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()

ここに画像の説明を入力

ただし、Qubole の Analyze で同じコードを実行すると、以下のエラーが発生します。

ここに画像の説明を入力

以下のコードを取り出すと、Qubole の Anlayze で問題なく動作します。

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

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

        })

どこかでcaseクラスの使用法を変更する必要があると思います。

Spark 2.3 を使用しています。

誰かがこの問題を解決する方法を教えてください。

他に詳細が必要な場合はお知らせください。

4

2 に答える 2

0

あなたがしなければならないのはimport spark.implicits._、 my_Methd() 関数の中にあることだけです。

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}")

    })              
} 
于 2019-11-21T00:07:34.953 に答える