Ошибка атрибута разделения при попытке применить метод разделения в плоской карте после преобразования DF в RDD - PullRequest
0 голосов
/ 29 сентября 2018

Я использую приведенный ниже фрагмент кода для чтения некоторого примера файла с использованием контекста искры

>>> textFile = sc.textFile("hdfs:///user/hive/warehouse/sample.txt")
>>> textFile.flatMap(lambda word:word.split(" ")).collect()

Предположим, что это выдает что-то вроде ниже

[u'hi', u'there,', u'I', u'am', u'working', u'on', u'something', u'random.']

Теперь я использую приведенный ниже фрагмент кода дляпрочитайте некоторый пример файла, используя фрейм данных, а затем попытайтесь преобразовать в rdd и применить flatmap, как это было сделано ранее

>>> df = spark.read.text("hdfs:///user/hive/warehouse/sample.txt")
>>> df.rdd.flatMap(lambda word:word.split(" ")).collect()

Это не удается с атрибутом Ошибка разделения.

Я продолжил проверять тип данныхdf.rdd и textFile, используя приведенный ниже фрагмент кода

>>> type(df.rdd)
<class 'pyspark.rdd.RDD'>
>>> type(textFile)
<class 'pyspark.rdd.RDD'>

Оба идентичные.

Теперь, когда я проверяю тип отдельных элементов этих Rdd, используя приведенный ниже фрагмент кода.Я наблюдаю разницу.

>>> textFile.map(lambda x:type(x)).collect()
[<type 'unicode'>]
>>> df.rdd.map(lambda x:type(x)).collect()
[<class 'pyspark.sql.types.Row'>]

Почему существует неуверенность

1 Ответ

0 голосов
/ 29 сентября 2018

Вы должны преобразовать его в список после преобразования df в rdd

>>> textFile = sc.textFile("hdfs://localhost:8020/test/ali/sample.txt")
>>> textFile.flatMap(lambda word:word.split(" ")).collect()
['hi', 'there,', 'I', 'am', 'working', 'on', 'something', 'random.']
>>> 
>>> df = spark.read.text("hdfs://localhost:8020/test/ali/sample.txt")
>>> df.rdd.flatMap(lambda x: list(x)).flatMap(lambda word:word.split(" ")).collect()
['hi', 'there,', 'I', 'am', 'working', 'on', 'something', 'random.']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...