Spark чтение файла Avro - PullRequest
       32

Spark чтение файла Avro

0 голосов
/ 11 декабря 2018

Я использую com.databricks.spark.avro.Когда я запускаю его из spark-shell следующим образом: spark-shell --jar spark-avro_2.11-4.0.0.jar, я могу прочитать файл, выполнив это:

import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
val avroInput = sqlContext.read.format("com.databricks.spark.avro").load(inputPath)
avroInput.write.format("com.databricks.spark.avro").save(outputPath)

Но если я попытаюсь сделать то же самое из моего проекта, используя sbt clean run, Я получаю:

java.lang.ClassNotFoundException: Failed to find data source: org.apache.spark.sql.avro.AvroFileFormat. Please find packages at http://spark.apache.org/third-party-projects.html
[info]   at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:657)
[info]   at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:194)
[info]   at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:178)
[info]   at com.databricks.spark.avro.package$AvroDataFrameReader$$anonfun$avro$2.apply(package.scala:34)

"com.databricks" %% "spark-avro" % "4.0.0" указан в моих зависимостях и находится в моих внешних библиотеках.Есть ли еще одна зависимость, по которой я скучаю?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Оказывается, мне не нужно было использовать банку с базами данных.Я добавил apache spark avro в свои зависимости:

"org.apache.spark"             %% "spark-avro"           % "2.4.0"

И я смог прочитать свой файл avro в DataFrame:

val avroInput = sparkSession.read
  .format("avro")
  .load("/pathtoFile/avroFile.avro")
0 голосов
/ 11 декабря 2018

Посмотрите на https://spark.apache.org/docs/latest/sql-data-sources-avro.html#deploying, чтобы увидеть, как развернуть Avro jar вместе с приложением jar с помощью команды spark-submit.В частности, вам нужно использовать опцию --packages.Это также работает для spark-shell.

...