Сохранить фрейм данных как AVRO Spark 2.4.0 - PullRequest
0 голосов
/ 27 ноября 2018

Начиная с Spark 2.4.0, можно сохранять как AVRO без внешних банок.Однако я не могу заставить его работать вообще.Мой код выглядит следующим образом:

key = 'filename.avro'
df.write.mode('overwrite').format("avro").save(key)

Я получаю следующую ошибку:

pyspark.sql.utils.AnalysisException: 'Failed to find data source: avro. Avro is built-in but external data source module since Spark 2.4. Please deploy the application as per the deployment section of "Apache Avro Data Source Guide".;'

Поэтому я смотрю на Руководство по источникам данных Apache Avro (https://spark.apache.org/docs/latest/sql-data-sources-avro.html) и оно даетследующий пример:

df=spark.read.format("avro").load("examples/src/main/resources/users.avro")

df.select("name","favorite_color").write.format("avro").save("namesAndFavColors.avro")

То же самое, поэтому я потерян .. У кого-нибудь есть идеи, что не так?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Модуль spark-avro является внешним и по умолчанию не входит в spark-submit или spark-shell.

Как и в любых приложениях Spark, spark-submit используется для запуска вашего приложения.spark-avro_2.11 и его зависимости могут быть непосредственно добавлены в spark-submit с помощью --packages, например,

./bin/spark-submit --packages org.apache.spark:spark-avro_2.11:2.4.0 ...

. Для экспериментов на spark-shell вы также можете использовать --packages для добавления org.apache.spark: spark-avro_2.11 и его зависимости напрямую,

./bin/spark-shell --packages org.apache.spark:spark-avro_2.11:2.4.0 ...
0 голосов
/ 27 ноября 2018

В документации, на которую вы ссылаетесь, четко сказано, что:

Модуль spark-avro является внешним и по умолчанию не входит в spark-submit или spark-shell.

и далее объясняет, как включить пакет.

Итак, ваше утверждение:

Начиная с Spark 2.4.0, можно сохранять как AVRO без внешних jar-файлов.H

просто неверно.

...