首页 > 解决方案 > 将 CSV 导入 Spark DataFrame 时出现 java.io.StreamCorruptedException

问题描述

我正在standalone模式下运行 Spark 集群。Master 和 Worker 节点都可以访问,并在 Spark Web UI 中显示日志。

我正在尝试将数据加载到 PySpark 会话中,以便可以使用 Spark DataFrames。

遵循几个示例(其中一个来自官方文档),我尝试使用不同的方法,都失败并出现相同的错误。例如

from pyspark.conf import SparkConf
from pyspark.context import SparkContext
from pyspark.sql import SQLContext

conf = SparkConf().setAppName('NAME').setMaster('spark://HOST:7077')
sc = SparkContext(conf=conf)
spark = SparkSession.builder.getOrCreate()

# a try
df = spark.read.load('/path/to/file.csv', format='csv', sep=',', header=True)

# another try
sql_ctx = SQLContext(sc)
df = sql_ctx.read.csv('/path/to/file.csv', header=True)

# and a few other tries...

每次,我都会遇到同样的错误:

Py4JJavaError:调用 o81.csv 时出错。:

org.apache.spark.SparkException:作业因阶段失败而中止:阶段 0.0 中的任务 0 失败 4 次,最近一次失败:阶段 0.0 中丢失任务 0.3(TID 3,192.168.XX,执行者 0):

java.io.StreamCorruptedException:无效的流标头:0000000B

我正在从 JSON 和 CSV 加载数据(当然要适当地调整方法调用),每次的错误都是一样的。

有人明白是什么问题吗?

标签: apache-sparkpysparkpyspark-sql

解决方案


对于它可能关心的人,由于此响应,我终于弄清楚了问题。

pyspark版本SparkSession与 Spark 应用程序版本不匹配(2.4 VS 2.3)。

在 2.3 版下重新安装pyspark立即解决了问题。#facepalm


推荐阅读