开发者社区> 问答> 正文

Parquet中的schema合并是什么呢?

Parquet中的schema合并是什么呢?

展开
收起
游客qzzytmszf3zhq 2021-12-09 20:03:48 347 0
1 条回答
写回答
取消 提交回答
  • 跟protocol buffer,avro,thrift一样,parquet也支持schema演变升级。用户可以在刚开始的时候创建简单的schema,然后根据需要随时扩展新的列。

    Parquet 数据源支持自动检测新作列并且会合并schema。

    由于合并schema是一个相当耗费性能的操作,而且很多情况下都是不必要的,所以从spark 1.5开始就默认关闭掉该功能。有两种配置开启方式:

    通过数据源option设置mergeSchema为true。在全局sql配置中设置spark.sql.parquet.mergeSchema 为true.// This is used to implicitly convert an RDD to a DataFrame.import spark.implicits._

    // Create a simple DataFrame, store into a partition directoryval squaresDF = spark.sparkContext.makeRDD(1 to 5).map(i => (i, i * i)).toDF("value", "square")squaresDF.write.parquet("data/test_table/key=1")

    // Create another DataFrame in a new partition directory,// adding a new column and dropping an existing columnval cubesDF = spark.sparkContext.makeRDD(6 to 10).map(i => (i, i * i * i)).toDF("value", "cube")cubesDF.write.parquet("data/test_table/key=2")

    // Read the partitioned tableval mergedDF = spark.read.option("mergeSchema", "true").parquet("data/test_table")mergedDF.printSchema()

    // The final schema consists of all 3 columns in the Parquet files togeth

    2021-12-09 20:04:04
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Adopting Dataframes and Parquet in an Already Existing Warehouse 立即下载
File Format Benchmark - Avro, JSON, ORC, & Parquet 立即下载
Get rid of traditional ETL, Move to Spark! 立即下载