Spark:如何将Avro或Parquet文件作为数据集读取

时间:2018-05-20 19:44:50

标签: apache-spark dataset apache-spark-sql avro parquet

鉴于Avro和Parquet文件包含该数据的数据和架构,那么在Spark中,应该可以将这些文件作为数据集而不是DataFrame读取。但是我看到的所有资源都是以DataFrame的形式阅读这些文件,而我无法将这些文件作为数据集读取。

有谁知道如何将这些文件作为数据集读取?

1 个答案:

答案 0 :(得分:0)

def readParquet(spark: SparkSession): Unit = {
  import org.apache.spark.sql._
  import spark.implicits._
  import Test._

  spark.conf.set("spark.sql.parquet.enableVectorizedReader", "false") // This is optional, only if you face any spark parquet decoders

  val schema = Encoders.product[TestData].schema
  val ds =
    spark.read
      .schema(schema)
      .parquet("data.parquet")
      .as[TestData]

  ds.show(false)
}

object Test {
  case class TestData(id: Int, name: String, usedAmount: Double)
}