Spark读取Avro文件

喝咖啡

我正在使用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"在我的依赖项中列出,并且在我的外部库中。我还有其他依赖吗?

喝咖啡

原来我不必使用databricks jar。我将apache spark avro添加到了我的依赖项中:

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

而且我能够将avro文件读取为DataFrame

val avroInput = sparkSession.read
  .format("avro")
  .load("/pathtoFile/avroFile.avro")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章