使用 spark-avro 将 Avro 读入 spark

Reading Avro into spark using spark-avro

我无法使用 spark-avro 库读取 spark 文件。以下是我采取的步骤:

我的错。自述文件清楚地说:

Versions

Spark changed how it reads / writes data in 1.4, so please use the correct version of this dedicated for your spark version

1.3 -> 1.0.0

1.4+ -> 1.1.0-SNAPSHOT

我使用了 spark:1.3.1 和 spark-avro: 1.1.0。当我使用 spark-avro: 1.0.0 时,它起作用了。

import org.apache.spark.sql.SparkSession        

val spark = SparkSession.builder()
            .appName(appName).master(master).getOrCreate()

val sqlContext = spark.sqlContext
val episodes = sqlContext.read.format("com.databricks.spark.avro")
                .option("header","true")
                .option("inferSchema","true")
                .load("episodes.avro")

episodes.show(10)

由于 spark-avro 模块是外部的,所以 DataFrameReader 或 DataFrameWriter 中没有 .avro API。

要load/saveAvro格式的数据,需要指定数据源选项格式为avro。

示例:

val usersDF = spark.read.format("avro").load("examples/src/main/resources/users.avro")
usersDF.select("name", "favorite_color").write.format("avro").save("namesAndFavColors.avro")