0

Ich habe eine Streaming-App und wenn ich versuche, den HiveContext.getOrCreate aufrufen, wird es mit dem folgenden stmt. ‚Objekt HiveContext in Paket hive kann nicht im Paket zugegriffen werden org.apache.spark.sql.hiveHiveContext singleton Objekt

ich HiveContext statt SqlContext für meine Anwendung erfordern würde und die Schaffung neuer HiveContext jedes Mal würde keine gangbare Lösung sein.

Hier ist mein Code-Schnipsel:

object sampleStreamingApp { 

    def createStreamingContext(checkpointDirectory: String): StreamingContext = { 
    val conf = new SparkConf().setAppName("sampleStreaming") 
    val sc = new SparkContext(conf) 
    val ssc = new StreamingContext(sc, Milliseconds(5000)) 
    ssc.checkpoint(checkpointDirectory) 
    val smDStream = ssc.textFileStream("/user/hdpuser/data") 
    val smSplitted = smDStream.map(x => x.split(";")).map(x => Row.fromSeq(x)) 
    smSplitted.foreachRDD { rdd => 
      val sqlContext = HiveContext.getOrCreate(rdd.sparkContext) 
      import sqlContext.implicits._ 
      <other code logic goes here> 
     } 
    } 
    ssc 
} 

def main(args: Array[String]) { 
    val checkpointDirectory = "hdfs://localhost:8020/user/dfml/checkpointing/AAA" 
    val ssc = StreamingContext.getActiveOrCreate(checkpointDirectory,() => createStreamingContext(checkpointDirectory)) 

    ssc.start() 
    ssc.awaitTermination() 
    } 
} 

Jede Hilfe

Antwort

0

Das Objekt würde geschätzt HiveContext privat ist, also es ist nicht zugänglich.

Verwandte Themen