Python PySpark不以拼花格式编写时间戳和十进制列的统计信息

Python PySpark不以拼花格式编写时间戳和十进制列的统计信息,python,pyspark,parquet,Python,Pyspark,Parquet,我正在尝试使用Pyspark生成拼花地板文件。我发现在生成的拼花文件的元数据中,没有设置TimestampType和DecimalType列的统计信息(IntegerType和DateType列很好) 使用PyArrow读取拼花地板文件时,我需要统计信息(最小值和最大值)来过滤行组 我正在使用pyspark 2.4.0生成拼花地板文件,并使用pyarrow 0.12.1读取它们: 导入日期时间 从十进制输入十进制 从pyarrow导入拼花地板 从pyspark导入SparkConf、SparkC

我正在尝试使用Pyspark生成拼花地板文件。我发现在生成的拼花文件的元数据中,没有设置TimestampType和DecimalType列的统计信息(IntegerType和DateType列很好)

使用PyArrow读取拼花地板文件时,我需要统计信息(最小值和最大值)来过滤行组

我正在使用pyspark 2.4.0生成拼花地板文件,并使用pyarrow 0.12.1读取它们:

导入日期时间
从十进制输入十进制
从pyarrow导入拼花地板
从pyspark导入SparkConf、SparkContext、SQLContext
从pyspark.sql.types导入(
StructField,
结构类型,
整型,
日期类型,
时间戳类型,
分母型,
)
数据=[
(100,datetime.date(2019,3,1),datetime.datetime(2019,3,1,1),十进制('100.0'),
(200,datetime.date(2019,3,2),datetime.datetime(2019,3,2,1),十进制('200.0'),
(300,datetime.date(2019,3,3),datetime.datetime(2019,3,3,1),十进制('300.0'),
(400,datetime.date(2019,3,4),datetime.datetime(2019,3,4,1),十进制('400.0'),
]
列=[
StructField('int_column',IntegerType()),
StructField('date\u column',DateType()),
StructField('timestamp_column',TimestampType()),
StructField('decimal_column',DecimalType(10,2)),
]
schema=StructType(列)
spark_context=SparkContext(conf=SparkConf())
sql\u context=SQLContext(spark\u context)
rdd=spark_context.parallelize(数据)
df=sql\u context.createDataFrame(rdd,schema=schema)
db_path='/tmp/parquet_test'
拼花地板(db_路径,compression='gzip')
数据集=拼花。拼花数据集(db_路径)
meta\u data=dataset.pieces[1]。获取元数据(parquet.ParquetFile)
行组=元数据。行组(0)
对于范围(列)中的列索引:
列=行组。列(列索引)
打印(f'列名:{column.path_in_schema},is_stats_set:{column.is_stats_set}'))
代码的输出为:

column name: int_column, is_stats_set: True
column name: date_column, is_stats_set: True
column name: timestamp_column, is_stats_set: False
column name: decimal_column, is_stats_set: False
我不知道为什么PySpark没有设置最后两列的统计信息

我是否遗漏了代码中的某些内容,或者这是PySpark的预期行为?如果是后者,我需要自己将时间戳转换为整数或从整数转换为整数