如何使用pyspark读取avro文件

How to read avro file using pyspark

我正在尝试在 jupyter notebook 中读取 avro 文件,但遇到了这个问题。

Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.avro.AvroFileFormat.DefaultSource

而且我似乎无法弄清楚如何从哪里获得这种依赖性。

import findspark
findspark.init()

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql.types import *

spark = SparkSession.builder.appName("readavro").master("local").getOrCreate()

result = spark.read.format('com.databricks.spark.avro').load("file:///C:/Downloads/part-r-00000.avro")

确保将 org.apache.spark:spark-avro_2.12:2.4.5 jar 添加到类路径中。 由于 spark-avro 模块是外部的,因此 DataFrameReader 或 DataFrameWriter 中没有 .avro API。所以试试

result = spark.read.format('avro').load("file:///C:/Downloads/part-r-00000.avro")

包含 avro 依赖项

$ bin/spark-shell --packages com.databricks:spark-avro_2.12:2.4.5