2017-09-26 17 views
0

Mon exigence est d'activer l'accès ODBC/JDBC à une table SparkSQL temporaire, pour laquelle il y avait un DataFrame dans Spark (mélange de JSON et streaming). Je l'ai fait fonctionner dans Spark 1.6, puis récemment mis à niveau vers Spark 2.1.1. J'ai ajusté mon code en tant que deuxième répondeur dans this question. J'ai remarqué l'avertissement sur cette clause deprecation, cependant:Spark 2.x utilisant HiveThriftServer2 avec sqlContext

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

Alors j'ai vérifié sur javadoc SqlContext, et il dit "Obsolète Utilisez SparkSession.builder place depuis 2.0.0..." Mais alors, même pour la dernière HiveThriftserver2.scala code in git, la méthode startWithContext nécessite le paramètre de type sqlContext.

Ainsi, quelqu'un pourrait-il dans le savoir faire la lumière sur ce point:

  1. Ai-je pris la bonne façon de résoudre le problème, en premier lieu? J'aimerais ne pas démarrer HiveThriftServer2 à partir de mon code Spark, mais /sbin/start-thriftserver.sh ne me donne pas une option pour démarrer une instance de thriftserver avec ma classe. Ou est-ce que ça me manque?

  2. Existe-t-il une autre façon de démarrer HiveThriftServer2 à partir du code Spark, en utilisant SparkSession?

+0

Le script de démarrage de Thrift serveur ouvre juste et dirige une classe Java/Scala pour autant que je sais –

+0

@ cricket_007 oui, et cette classe n'est pas la classe que je veux fournir (si je comprends bien le script), mais classe HiveThriftServer2; Je voulais juste vérifier que ma compréhension était correcte. – Roman

+0

Voici la ligne que vous voulez si vous voulez créer cet objet par programmation. https://github.com/apache/spark/blob/master/sql/hive-thriftserver/src/main/scala/org/apache/spark/sql/hive/thriftserver/HiveThriftServer2.scala#L91 –

Répondre

0

Vous n'avez plus besoin de créer un SQLContext. Juste le prendre de la session d'allumage.

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

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