Я читаю CSV как Spark DataFrame и выполняю над ним операции машинного обучения. Я продолжаю получать сериализацию Python EOFError - есть идеи, почему? Я думал, что это может быть проблема с памятью, то есть файл, превышающий доступную оперативную память, но резкое уменьшение размера DataFrame не предотвратило ошибку EOF.
Код игрушки и ошибка ниже.
#set spark context
conf = SparkConf().setMaster("local").setAppName("MyApp")
sc = SparkContext(conf = conf)
sqlContext = SQLContext(sc)
#read in 500mb csv as DataFrame
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true',
inferschema='true').load('myfile.csv')
#get dataframe into machine learning format
r_formula = RFormula(formula = "outcome ~ .")
mldf = r_formula.fit(df).transform(df)
#fit random forest model
rf = RandomForestClassifier(numTrees = 3, maxDepth = 2)
model = rf.fit(mldf)
result = model.transform(mldf).head()
Запуск приведенного выше кода с spark-submit
на одном узле неоднократно выдает следующую ошибку, даже если размер DataFrame уменьшен до подгонки модели (например, tinydf = df.sample(False, 0.00001)
:
Traceback (most recent call last):
File "/home/hduser/spark1.6/python/lib/pyspark.zip/pyspark/daemon.py", line 157,
in manager
File "/home/hduser/spark1.6/python/lib/pyspark.zip/pyspark/daemon.py", line 61,
in worker
File "/home/hduser/spark1.6/python/lib/pyspark.zip/pyspark/worker.py", line 136,
in main if read_int(infile) == SpecialLengths.END_OF_STREAM:
File "/home/hduser/spark1.6/python/lib/pyspark.zip/pyspark/serializers.py", line 545,
in read_int
raise EOFError
EOFError
df
и начать сначала? - person Jacek Laskowski   schedule 03.01.2017read.csv
вместо указания формата, и я также гарантирую, что кодировка и разделитель (также известный как разделитель) соответствуют вашему файлу csv. С ними можно манипулировать в.options()
в том же синтаксисе, который вы указалиinferschema
иheader
. Дополнительные параметры можно найти здесь. - person Will   schedule 20.08.2018