有两个单独的pyspark应用程序来实例化hiveContext而不是sqlcontext,这两个应用程序中的一个会因错误而失败:
例外:(“你必须用 Hive制造 spark。导出“spark_hive=true”并运行build/sbt assembly“,py4jjavaerror(调用none.org.apache.spark.sql.hive.hiveContext时出现错误。
”,javaObject id=o34039))
另一个应用程序成功终止。
我正在使用python API中的spark 1.6,并希望使用一些仅受hiveContext(例如collect_set)支持的 DataFrame 函数。我在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)
睡眠只是让脚本在我启动另一个进程时继续运行。
如果我有两个运行这个脚本的实例,那么在读取 parquet file时会显示上面的错误。当我用sqlcontext替换hiveContext时,一切都很好。
有人知道为什么吗?