在镶木地板中流数据压缩

时间:2018-03-20 07:25:18

标签: python pyspark parquet

我有加速计数据的数据框,我正在努力获得不错的实木复合地板压缩。

编码拼花使用是“PLAIN,BIT_PACKED”我认为使用Delta编码是更合适的算法,但我找不到办法(我也试过fastparquet& pyarrow)

有人知道存储这类数据的有效方法是什么?


    df.head()

        TS  id  x   y   z
    0   1520937997111   1038186 0.37633 0.45720 -0.77930
    1   1520937997147   1038186 0.42979 0.53668 -0.79269
    2   1520937997167   1038186 0.39102 0.48924 -0.84486
    3   1520937997187   1038186 0.42815 0.41864 -0.84589
    4   1520937997207   1038186 0.35527 0.44098 -0.81427


    df.dtypes
    TS      int64
    id      int64
    x     float64
    y     float64
    z     float64
    dtype: object

    schema = StructType([
        StructField('TS',LongType(),False),
        StructField('id',StringType(),False),
        StructField('x',FloatType(),False),
        StructField('y',FloatType(),False),
        StructField('z',FloatType(),False)
        ])
    df_hf = sqlContext.createDataFrame(df, schema)
    df_hf.write.option("compression","gzip").mode("overwrite").parquet("tst.parquet")


    parquet-tools meta tst.parquet

    row group 1: RC:43669 TS:1353947 OFFSET:4
    --------------------------------------------------------------------------------
    TS:           INT64 GZIP DO:0 FPO:4 SZ:77859/349399/4.49 VC:43669 ENC:PLAIN,BIT_PACKED
    id:           BINARY GZIP DO:0 FPO:77863 SZ:1022/480403/470.06 VC:43669 ENC:PLAIN,BIT_PACKED
    x:            FLOAT GZIP DO:0 FPO:78885 SZ:134681/174715/1.30 VC:43669 ENC:PLAIN,BIT_PACKED
    y:            FLOAT GZIP DO:0 FPO:213566 SZ:131936/174715/1.32 VC:43669 ENC:PLAIN,BIT_PACKED
    z:            FLOAT GZIP DO:0 FPO:345502 SZ:130390/174715/1.34 VC:43669 ENC:PLAIN,BIT_PACKED

0 个答案:

没有答案