запись DataFrame в TextFile в Pyspark - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь сохранить фрейм данных 'df2' в текстовый файл, используя следующий код

код: df2.write.format ('text'). Mode ('overwrite') ) .save ('/ tmp / hive / save_text')

Ошибка:

org. apache .spark. sql .AnalysisException: источник текстовых данных не поддерживает тип данных int.;

Py4JJavaError Traceback (последний вызов был последним) /databricks/spark/python/pyspark/sql/utils.py в deco (* a, ** kw) 62 try: - -> 63 возвращает f (* a, ** kw) 64 за исключением py4j.protocol.Py4JJavaError как e:

/ databricks / spark / python / lib / py4j-0.10.7-sr c. zip / py4j / protocol.py в get_return_value (ответ, gateway_client, target_id, name) 327 "Произошла ошибка при вызове {0} {1} {2}. \ n". -> 328 формат (target_id, ".", Name), значение) 329 else:

Py4JJavaError: Произошла ошибка при вызове o1239.save. : org. apache .spark. sql .AnalysisException: Источник текстовых данных не поддерживает тип данных int.;

** Задать вопрос: Предложите, пожалуйста, как записать данные из кадра данных в текстовый файл * *

1 Ответ

0 голосов
/ 05 февраля 2020

Обратите внимание, что для использования write.format ('text') ваш фрейм данных должен иметь только один столбец, иначе он выдаст ошибку. Следовательно, вам нужно преобразовать все столбцы в один столбец.

В качестве альтернативы, вы можете использовать write.format ('csv') или вы можете преобразовать его в RDD и сохранить его как текстовый файл.

* 1004 Например, ваш фрейм данных содержит два столбца, а именно. id, name (id - это int, а name - строка), и вы хотите записать его как id, name в выходной файл. Для этого напишите код, приведенный ниже:
df2.rdd.map(lambda x : str(x[0]) + "," + x[1]).saveAsTextFile('/tmp/hive/save_text')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...