Чтение CSV-файла в Pyspark вызывает ошибку FileNotFound Error - PullRequest
0 голосов
/ 09 марта 2020

У меня проблема с чтением файлов CSV в Pyspark и / или Spark.

Моя цель: прочитать все файлы CSV из определенного каталога в фрейм данных Pandas.

Я наиболее знаком с Python, включая Pandas. Поэтому это мой любимый язык. Файлы довольно маленькие, поэтому не должно быть проблем с их вычислением

По соображениям конфиденциальности я адаптировал некоторые имена файлов и путей - поэтому они имеют "странные" имена.

Мой первый шаг чтобы импортировать Pandas, проверьте содержимое папки с файлами CSV.

%pyhton
import pandas as pd
%sh
hdfs dfs -ls /dbm/ast-gbm/ntsf

В результате:

Найдено 140 элементов

/ dbm / ast-gbm / ntsf / ast1234.csv

список найденных файлов - здесь для краткости опущен

Пока все хорошо!

Далее я пытаюсь прочитать один пример CSV-файла, используя Python. Здесь начинаются проблемы.

df = pd.read_csv("/dbm/ast-gbm/ntsf/ast1234.csv")

Что приводит к проблеме 1:

[... - здесь для краткости опущено]

FileNotFoundError: [ Errno 2] Файл b '/ dbm / ast-gbm / ntsf / ast1234.csv' не существует: b '/ dbm / ast-gbm / ntsf / ast1234.csv'

Так как я Я могу понять список всех файлов с помощью оболочки. Я не понимаю ошибку.

В качестве обходного пути для этого я попытался загрузить файлы CSV в фрейм данных spark и преобразовать его в фрейм данных Pandas. Подобно тому, что предлагает следующее stackoverflow post .

%spark.spark
spark.conf.set("spark.sql.execution.arrow.enabled", "true")

val ast_all = spark.read
    .format("csv")
    .option("sep", ";")
    .option("inferSchema", "true")
    .option("header", "true")
    .load("/dbm/ast-gbm/ntsf/*.csv")

ast_all.createOrReplaceTempView("ast_all")

df = ast_all.select("*").toPandas()

Что приводит к проблеме 2:

console: 40: ошибка: значение до Pandas не является членом org. apache .spark. sql .DataFrame

df = ast_all.select ("*"). до Pandas ()

В идеале я бы нашел решение для проблемы 1 или проблемы 2. В качестве альтернативы можно также использовать другой способ загрузки файлов 140 csv во фрейм данных pandas.

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 09 марта 2020

Попытка исправить problem 2:

1 - Это утверждение неверно: val ast_all = spark.read. Этот код Scala, а не python. Замените его на ast_all = spark.read

2 - вы можете удалить ast_all.createOrReplaceTempView("ast_all"). Это утверждение не требуется.

3 - df = ast_all.select("*").toPandas() потребуется импортировать pandas, поэтому добавьте import pandas as pd вверху файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...