Spark 2.x 将 HiveThriftServer2 与 sqlContext 结合使用

Spark 2.x using HiveThriftServer2 with sqlContext

我的要求是启用 ODBC/JDBC 访问 SparkSQL 临时 table,Spark 中有一个 DataFrame(混合 JSON 基于和流媒体)。

我让它在 Spark 1.6 中工作,然后最近将 Spark 升级到 2.1.1。我调整了我的代码作为this question中的第二个回答者。但是,我注意到此条款的弃用警告:

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

所以查了下javadoc on sqlContext, and it says "Deprecated. Use SparkSession.builder instead. Since 2.0.0." But then, accordingly to even the latest HiveThriftserver2.scala code in git,方法startWithContext需要sqlContext类型的参数。

那么,有没有知情人士对此有所说明:

  1. 首先我是否选择了正确的方法来解决问题?我不想从我的 Spark 代码中启动 HiveThriftServer2,但是 /sbin/start-thriftserver.sh 没有为我提供使用 my [=38 启动 thriftserver 实例的选项=].或者,是吗,我只是想念它?

  2. 还有其他方法可以使用 SparkSession 从 Spark 代码启动 HiveThriftServer2 吗?

您不必再创建 SQLContext。只是从 spark 会话中获取它。

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

val sqlContext: SQLContext = spark.sqlContext
HiveThriftServer2.startWithContext(sqlContext)