Как читать файлы параллельно в DataBricks? - PullRequest
0 голосов
/ 19 марта 2020

Может кто-нибудь сказать мне, как читать файлы параллельно? Я пытаюсь что-то вроде этого:

def processFile(path):
  df = spark.read.json(path)
  return df.count()

paths = ["...", "..."]

distPaths = sc.parallelize(paths)
counts = distPaths.map(processFile).collect()
print(counts)

Сбой со следующей ошибкой:

PicklingError: Не удалось сериализовать объект: Исключение: Похоже, что вы пытаетесь сослаться SparkContext из широковещательной переменной, действия или преобразования. SparkContext может использоваться только в драйвере, а не в коде, который он запускает на рабочих. Для получения дополнительной информации см. SPARK-5063.

Есть ли другой способ оптимизировать это?

1 Ответ

3 голосов
/ 20 марта 2020

В вашем конкретном случае вы можете просто передать весь массив paths в DataFrameReader:

df = spark.read.json(paths)

... и чтение его файловых элементов будет распараллелено Spark.

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