【发布时间】:2016-01-10 13:22:28
【问题描述】:
拥有两个单独的 pyspark 应用程序来实例化 HiveContext 代替 SQLContext 会导致两个应用程序之一失败并出现错误:
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))
另一个应用程序成功终止。
我正在使用 Python API 中的 Spark 1.6,并希望使用一些 Dataframe 函数,这些函数仅受 HiveContext 支持(例如 collect_set)。我在 1.5.2 及更早版本上遇到过同样的问题。
这足以重现:
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)
sleep 只是为了在我启动另一个进程时保持脚本运行。
如果我运行此脚本的两个实例,则在读取 parquet 文件时会显示上述错误。当我将HiveContext 替换为SQLContext 时,一切都很好。
有人知道这是为什么吗?
【问题讨论】:
标签: apache-spark hive pyspark