【问题标题】:Spark 1.4.1 py4j.Py4JException: Method read([]) does not existSpark 1.4.1 py4j.Py4JException:方法读取([])不存在
【发布时间】:2015-11-11 16:26:49
【问题描述】:

我正在 Eclipse IDE 中使用 Pyspark 进行编程,并且一直在尝试过渡到 Spark 1.4.1,以便最终可以使用 Python 3 进行编程。以下程序在 Spark 1.3.1 中工作,但在 Spark 1.4 中引发异常。 1:

from pyspark import SparkContext, SparkConf 
from pyspark.sql.types import * 
from pyspark.sql import SQLContext 

if __name__ == '__main__': 
    conf = SparkConf().setAppName("MyApp").setMaster("local") 

    global sc 
    sc = SparkContext(conf=conf)     

    global sqlc 
    sqlc = SQLContext(sc) 

    symbolsPath = 'SP500Industry.json' 
    symbolsRDD = sqlc.read.json(symbolsPath) 

    print "Done"" 

我得到的回溯如下:

Traceback (most recent call last): 
  File "/media/gavin/20A6-76BF/Current Projects Luna/PySpark               Test/Test.py", line 21, in <module>
  symbolsRDD = sqlc.read.json(symbolsPath) #rdd with all symbols (and their industries 
  File "/home/gavin/spark-1.4.1-bin-hadoop2.6/python/pyspark/sql/context.py", line 582, in read 
  return DataFrameReader(self) 
  File "/home/gavin/spark-1.4.1-bin-hadoop2.6/python/pyspark/sql/readwriter.py", line 39, in __init__ 
self._jreader = sqlContext._ssql_ctx.read() 
  File "/home/gavin/spark-1.4.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 538, in __call__ 
  File "/home/gavin/spark-1.4.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 304, in get_return_value 
py4j.protocol.Py4JError: An error occurred while calling o18.read.          Trace: 
py4j.Py4JException: Method read([]) does not exist 
    at         py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:333) 
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:342) 
    at py4j.Gateway.invoke(Gateway.java:252) 
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) 
    at py4j.commands.CallCommand.execute(CallCommand.java:79) 
    at py4j.GatewayConnection.run(GatewayConnection.java:207) 
    at java.lang.Thread.run(Thread.java:745)" 

我为该项目拥有的外部库是 ... spark-1.4.1-bin-hadoop2.6/python ... spark-1.4.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip ... spark-1.4.1-bin-hadoop2.6/python/lib/pyspark.zip(包括和不包括这个都试过)

谁能帮我解决我做错了什么?

【问题讨论】:

    标签: python eclipse apache-spark pydev pyspark


    【解决方案1】:

    您需要在调用加载之前将格式设置为“json”。否则 spark 会假设你正在尝试加载 Parquet 文件。

    symbolsRDD = sqlc.read.format('json').json(symbolsPath) 
    

    但是,我仍然无法弄清楚为什么您会收到读取方法错误。 Spark 应该抱怨它发现了一个无效的 Parquet 文件。

    【讨论】:

    • 在您的调整中,我得到了与 OP 中提到的完全相同的错误。感谢您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2023-02-01
    • 2023-03-09
    • 2017-04-12
    • 2019-09-24
    • 2015-11-30
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多