【问题标题】:Can't read avro in Jupyter notebook无法在 Jupyter 笔记本中读取 avro
【发布时间】:2019-04-25 13:48:24
【问题描述】:

我已经创建了一个 SparkContext 和一个 Spark 全局变量。当我阅读 ORC 文件时,我可以像 spark.read.format("orc").load("filepath") 一样简单地阅读它们,但是,对于 avro,即使我尝试像这样导入 jar,我似乎也不能这样做:

    spark.conf.set("spark.jars.packages",
    "file:///projects/apps/lib/spark-avro_2.11-3.2.0.jar")

错误:

and then try to read the avro file. I get an error like so: 
Py4JJavaError: An error occurred while calling o65.load.
: org.apache.spark.sql.AnalysisException: Failed to find data source: avro. Please find an Avro package at http://spark.apache.org/third-party-projects.html;

【问题讨论】:

  • 你检查过这个链接吗:stackoverflow.com/questions/46434255/…
  • @Starfight 该链接用于 spark-shell,Jupyter notebook 需要它
  • 我明白了,但是贡献者建议使用com.databricks.spark.avro 而不是avro,也许很有趣?

标签: python apache-spark pyspark jupyter-notebook


【解决方案1】:

spark.jars.packages 采用 Gradle 兼容坐标:

spark.jars.packages  org.apache.spark:spark-avro_2.12:2.4.2

另外,如How to load jar dependenices in IPython Notebook 中所述,它必须在初始化JVM 和SparkSession / SparkContext 之前设置。

所以你必须:

  • 修复设置。
  • 在初始化 JVM 之前将它们作为配置或环境变量提供。

【讨论】:

  • 是否可以销毁当前已初始化的spark上下文并在jupyter中使用jar设置spark上下文?
猜你喜欢
  • 2021-11-18
  • 2021-09-18
  • 1970-01-01
  • 2021-04-14
  • 2020-11-18
  • 2018-10-07
  • 2018-07-28
  • 2016-11-18
相关资源
最近更新 更多