Avere due applicazioni separate che pyspark un'istanza di un HiveContext
al posto di un SQLContext
lascia una delle due applicazioni con l'errore:più applicazioni Spark con HiveContext
Exception: ("You must build Spark with Hive. Export 'SPARK_HIVE=true' and run build/sbt assembly", Py4JJavaError(u'An error occurred while calling None.org.apache.spark.sql.hive.HiveContext.\n', JavaObject id=o34039))
L'altra applicazione termina con successo.
Sto utilizzando Spark 1.6 dall'API Python e voglio utilizzare alcune funzioni Dataframe
, che sono supportate solo con un HiveContext
(ad esempio 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 mi metto l'altro processo.
Se sono presenti due istanze di questo script, l'errore sopra riportato viene visualizzato durante la lettura del file parquet. Quando sostituisco HiveContext
con SQLContext
, tutto va bene.
Qualcuno sa perché è così?