Applicazioni Multiple Spark con HiveContext

Avere due applicazioni pyspark separate che istanziano un HiveContext al posto di un SQLContext consente a una delle due applicazioni di fallire con l’errore:

Eccezione: (“È necessario creare Spark con Hive. Esportare ‘SPARK_HIVE = true’ ed eseguire assembly build / sbt”, Py4JJavaError (u’nell’errore si è verificato durante la chiamata a None.org.apache.spark.sql.hive.HiveContext. \ N ‘, JavaObject id = o34039))

L’altra applicazione termina correttamente.

Sto usando Spark 1.6 dall’API Python e voglio usare alcune funzioni di Dataframe , che sono supportate solo con un HiveContext (es. collect_set ). Ho avuto lo stesso problema su 1.5.2 e precedenti.

Questo è sufficiente per riprodurre:

 import time from pyspark import SparkContext, SparkConf from pyspark.sql import SQLContext conf = SparkConf() sc = SparkContext(conf=conf) sq = HiveContext(sc) data_source = '/tmp/data.parquet' df = sq.read.parquet(data_source) time.sleep(60) 

Il sleep è solo per mantenere lo script in esecuzione mentre avvio l’altro processo.

Se ho due istanze di questo script in esecuzione, l’errore sopra riportato viene visualizzato durante la lettura del file parquet. Quando sostituisco HiveContext con SQLContext tutto va bene.

Qualcuno sa perchè è così?