无法在spark中创建DataFrame?

时间:2016-11-10 22:13:05

标签: apache-spark pyspark

我试着通过查看their examplesgetting 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的东西,但我不知道这是什么或我在哪里设置它。

有人能指出我正确的方向来解决这个问题吗?所以我可以创建一个数据框吗?

1 个答案:

答案 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 /

希望这有帮助。