如何读取Pyspark Jupiter笔记本中的Avro文件?

问题描述 投票:0回答:1

如何在 Jupyter Notebook 上读取 Pyspark 中的 Avro 文件?!

Avro 从 Spark 2.4 开始是内置但外部的数据源模块。请按照“Apache Avro 数据源指南”的部署部分部署应用程序。

我尝试了以下方法

! spark-submit --packages com.databricks:spark-avro_2.11-4.0.0.jar

方法 1

df = spark.read.format("com.databricks.spark.avro").load("xxx.avro")

方法 2

df= spark.read.format("avro").load("xxx.avro")

方法 3

from pyspark.sql import SparkSession
from pyspark import SparkConf, SparkContext
    
spark = SparkSession.builder \
            .appName('DataFrame') \
            .master('local[*]')\
            .config('spark.jars', 'spark-avro_2.11-4.0.0.jar') \
            .getOrCreate()
df = spark.read.format('avro').load(file)

投掷错误:

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-spark pyspark jupyter-notebook avro spark-avro
1个回答
0
投票

根据此文档,这应该可以完成工作。

将 org.apache.spark:spark-avro_2.12:3.5.1 添加到 Spark 提交中:

./bin/spark-submit --packages org.apache.spark:spark-avro_2.12:3.5.1

要以 Avro 格式加载/保存数据,需要指定数据源选项格式为 avro(或 org.apache.spark.sql.avro)。

df = spark.read.format("avro").load("examples/src/main/resources/users.avro")
df.select("name", "favorite_color").write.format("avro").save("namesAndFavColors.avro")
© www.soinside.com 2019 - 2024. All rights reserved.