小编Ome*_*age的帖子

使用 delta 编码 coulmns 编写 parquet 文件

我试图用增量编码编写镶木地板文件。 此页面指出 parquet 支持三种类型的 delta 编码:

    (DELTA_BINARY_PACKED, DELTA_LENGTH_BYTE_ARRAY, DELTA_BYTE_ARRAY).
Run Code Online (Sandbox Code Playgroud)

由于spark或不允许我们指定编码方法,我很好奇如何编写启用增量编码的文件pysparkpyarrow

但是,我在互联网上发现,如果我有TimeStamp镶木地板类型的列,将使用增量编码。所以我使用以下代码来scala创建镶木地板文件。但编码不是增量。


    val df = Seq(("2018-05-01"),
                ("2018-05-02"),
                ("2018-05-03"),
                ("2018-05-04"),
                ("2018-05-05"),
                ("2018-05-06"),
                ("2018-05-07"),
                ("2018-05-08"),
                ("2018-05-09"),
                ("2018-05-10")
            ).toDF("Id")
    val df2 = df.withColumn("Timestamp", (col("Id").cast("timestamp")))
    val df3 = df2.withColumn("Date", (col("Id").cast("date")))

    df3.coalesce(1).write.format("parquet").mode("append").save("date_time2")
Run Code Online (Sandbox Code Playgroud)

parquet-tools显示有关写入的 parquet 文件的以下信息。

file schema: spark_schema 
--------------------------------------------------------------------------------
Id:          OPTIONAL BINARY L:STRING R:0 D:1
Timestamp:   OPTIONAL INT96 R:0 D:1
Date:        OPTIONAL INT32 L:DATE R:0 D:1

row group 1: RC:31 TS:1100 OFFSET:4 
--------------------------------------------------------------------------------
Id:           BINARY …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark parquet pyspark pyarrow

4
推荐指数
1
解决办法
3496
查看次数

标签 统计

apache-spark ×1

parquet ×1

pyarrow ×1

pyspark ×1

scala ×1