我试着通过查看their examples和getting started tutorials中的一些来熟悉火花。我想加载一个文本文件,其中包含由选项卡分隔的两列数字,然后从中创建一个数据框。我希望使用以下命令来做到这一点:
>>> data = sc.textFile("amazon.txt")
>>> df = data.map(lambda r: [int(x) for x in r.split("\t")])
>>> df = df.toDF()
但是当我执行最后一个命令时,它会抛出错误:
u'Unable to locate hive jars to connect to metastore. Please set spark.sql.hive.metastore.jars.'
完整堆栈跟踪:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/spark-2.0.1-bin-hadoop2.7/python/pyspark/sql/session.py", line 57, in toDF
return sparkSession.createDataFrame(self, schema, sampleRatio) File "/spark-2.0.1-bin-hadoop2.7/python/pyspark/sql/session.py", line 526, in createDataFrame
jdf = self._jsparkSession.applySchemaToPythonRDD(jrdd.rdd(), schema.json()) File "/spark-2.0.1-bin-hadoop2.7/python/lib/py4j-0.10.3-src.zip/py4j/java_gateway.py", line 1133, in __call__ File "/spark-2.0.1-bin-hadoop2.7/python/pyspark/sql/utils.py", line 79, in deco
raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace) pyspark.sql.utils.IllegalArgumentException: u'Unable to locate hive jars to connect to metastore. Please set spark.sql.hive.metastore.jars.'
基于erorr消息,看起来我需要设置一个名为spark.sql.hive.metastore.jars
的东西,但我不知道这是什么或我在哪里设置它。
有人能指出我正确的方向来解决这个问题吗?所以我可以创建一个数据框吗?
答案 0 :(得分:1)
如果您使用的是Spark 1.5或更高版本,那么您可能会有spark.sql.hive.metastore.jars
的多个或错误版本
您可以将以下设置添加到$ SPARK_HOME / conf / spark_defaults.conf
spark.sql.hive.metastore.version X.X.X
spark.sql.hive.metastore.jars maven
如果将spark.sql.hive.metastore.jars设置为maven,则会下载相应的jar并将其添加到类路径中。您也可以将它设置为普通的Java类路径,如/ usr / hive / lib / :/ usr / hadoop / lib /
希望这有帮助。