首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark读取Avro文件

Spark读取Avro文件
EN

Stack Overflow用户
提问于 2018-12-11 07:40:42
回答 2查看 11K关注 0票数 1

我使用的是com.databricks.spark.avro。当我在spark-shell中运行它时,就像这样:spark-shell --jar spark-avro_2.11-4.0.0.jar,我可以通过这样的方式读取文件:

代码语言:javascript
复制
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在我的项目中做同样的事情,我会得到:

代码语言:javascript
复制
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"在我的依赖项中列出,它在我的外部库中。我还遗漏了另一个依赖项吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-22 05:20:19

事实证明我不需要使用databricks jar。我将apache spark avro添加到我的依赖项中:

代码语言:javascript
复制
"org.apache.spark"             %% "spark-avro"           % "2.4.0"

我可以把我的avro文件读入DataFrame

代码语言:javascript
复制
val avroInput = sparkSession.read
  .format("avro")
  .load("/pathtoFile/avroFile.avro")
票数 2
EN

Stack Overflow用户

发布于 2018-12-11 09:35:10

看看https://spark.apache.org/docs/latest/sql-data-sources-avro.html#deploying,看看如何通过spark-submit命令将Avro jar与您的应用程序jar一起部署。具体来说,您需要使用--packages选项。这也适用于spark-shell

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53715347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档