2017-09-26 74 views
0

我的需求是啓用ODBC/JDBC訪問SparkSQL 臨時表,其中有一個Spark中的DataFrame(混合基於JSON和流)。使用HiveThriftServer2與sqlContext的Spark 2.x

我使它在Spark 1.6中工作,然後最近升級到Spark到2.1.1。我調整了我的代碼作爲this question中的第二個應答者。我注意到,對這一條款棄用警告,但是:

val sqlContext = new org.apache.spark.sql.SQLContext(spark.sparkContext) 

所以我對sqlContext檢查javadoc,和它說:「使用已過時,而不是SparkSession.builder 2.0.0以來。」但是,因此,即使是最新的HiveThriftserver2.scala code in git,startWithContext方法也需要sqlContext類型的參數。

所以,任何人都可以在知道一些線索這光:

  1. 我拿起解決問題的正確途徑,擺在首位?我很樂意不從我的Spark代碼中啓動HiveThriftServer2,但是然後/sbin/start-thriftserver.sh沒有爲我啓動一個帶有我的類的thriftserver實例的選項。或者,是嗎,我只是想念它?

  2. 是否有另一種方法使用SparkSession從Spark代碼啓動HiveThriftServer2?

+0

節儉服務器啓動腳本只是打開而據我所知運行的Java/Scala的類 –

+0

@ cricket_007是的,這班不是我想要提供(如果我理解腳本右)類,但是HiveThriftServer2類;我只是想仔細檢查我的理解是否正確。 – Roman

+0

如果您想以編程方式創建該對象,則此處爲您想要的行。 https://github.com/apache/spark/blob/master/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServer2.scala#L91 –

回答

0

您不必再創建SQLContext。 Juste從火花會議中拿走它。

val spark: SparkSession = SparkSession 
     .builder() 
     .appName("Your application name") 
     .getOrCreate() 

val sqlContext: SQLContext = spark.sqlContext 
HiveThriftServer2.startWithContext(sqlContext) 
相關問題