如何在 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".
根据此文档,这应该可以完成工作。
将 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")