Ошибка получения Pyspark для «split» отсутствует в списке при вызове функции split () - PullRequest
0 голосов
/ 30 сентября 2019

Я создал фрейм данных следующим образом

spark= SparkSession.builder.appName("test").getOrCreate()
categories=spark.read.text("resources/textFile/categories")
categories.show(n=2)
+------------+
|       value|
+------------+
|1,2,Football|
|  2,2,Soccer|
+------------+
only showing top 2 rows

Теперь, когда я конвертирую этот фрейм данных в RDD и пытаюсь разбить каждую строку RDD на основе "," (запятая)

crdd=categories.rdd.map(lambda line: line.split(',')[1])
crdd.foreach(lambda lin : print(lin))

При добавлении элемента в позиции 1 в RDD crdd я получаю следующую ошибку

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 13.0 failed 1 times, most recent failure: Lost task 0.0 in stage 13.0 (TID 13, localhost, executor driver): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "C:\Users\Downloads\bigdataSetup\spark-2.2.1-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\sql\types.py", line 1504, in __getattr__
    idx = self.__fields__.index(item)
ValueError: 'split' is not in list

Примечание: Данные в формате CSV здесь просто для того, чтобы их можно было легко воспроизвести.

1 Ответ

1 голос
/ 30 сентября 2019

, так как ваши данные в формате CSV, вы можете использовать read.csv API:

categories=spark.read.csv("resources/textFile/categories")

изменить ваш код, как показано ниже:

crdd = categories.rdd.map(lambda line: line.value.split(',')[1])

for i in crdd.take(10): print (i)
...