python - PySpark 加载 CSV AttributeError : 'RDD' object has no attribute '_get_object_id'

标签 python csv hadoop apache-spark

我正在尝试将 CSV 文件加载到 spark DataFrame 中。这是我到目前为止所做的:

# sc is an SparkContext.
appName = "testSpark"
master = "local"
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
sqlContext = sql.SQLContext(sc)

# csv path
text_file = sc.textFile("hdfs:///path/to/sensordata20171008223515.csv")
df = sqlContext.load(source="com.databricks.spark.csv", header = 'true', path = text_file)

print df.schema()

这是痕迹:

Traceback (most recent call last):
File "/home/centos/main.py", line 16, in <module>
df = sc.textFile(text_file).map(lambda line: (line.split(';')[0], line.split(';')[1])).collect()
File "/usr/hdp/2.5.6.0-40/spark/python/lib/pyspark.zip/pyspark/context.py", line 474, in textFile
File "/usr/hdp/2.5.6.0-40/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 804, in __call__
File "/usr/hdp/2.5.6.0-40/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 278, in get_command_part
AttributeError: 'RDD' object has no attribute '_get_object_id'

我是新手。因此,如果有人能告诉我我做错了什么,这将非常有帮助。

最佳答案

您不能将 RDD 传递给 csv 阅读器。你应该直接使用路径:

df = sqlContext.load(source="com.databricks.spark.csv", 
    header = 'true', path = "hdfs:///path/to/sensordata20171008223515.csv")

只有少数格式(尤其是 JSON)支持 RDD 作为输入参数。

关于python - PySpark 加载 CSV AttributeError : 'RDD' object has no attribute '_get_object_id' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45633302/

相关文章:

python - 如何让 selenium 和 chromium 在 ubuntu 上工作

Python sqlite3,从for循环插入数据

java - 如何从 csv 文件中删除特定条目?

hadoop - 如何自己将复制不足的 block 恢复到复制因子?

java - BufferedOutputStream的替代方法?

python - 从具有重复键的字典列表中创建具有唯一键的字典列表

python - SessionNotCreatedException : Message: Expected browser binary location, 但无法在默认位置找到二进制文件,没有 'moz:firefoxOptions.binary'

python - 将文件导入spyder时出错(正确的目录)

python - CSV 文件到行列表?

Hadoop:如何将任务统一分发到所有节点