Я использую PySpark на AWS Glue.Появляется при записи набора данных со столбцом даты, используемым в качестве ключа раздела, он всегда преобразуется в строку?
df = df \
.withColumn("querydatetime", to_date(df["querydatetime"], DATE_FORMAT_STR))
...
df \
.repartition("querydestinationplace", "querydatetime") \
.write \
.mode("overwrite") \
.partitionBy(["querydestinationplace", "querydatetime"]) \
.parquet("s3://xxx/flights-test")
Я заметил, что DDL моей таблицы от Афины
CREATE EXTERNAL TABLE `flights_test`(
`key` string,
`agent` int,
`queryoutbounddate` date,
`queryinbounddate` date,
`price` decimal(10,2),
`outdeparture` timestamp,
`indeparture` timestamp,
`numberoutstops` int,
`out_is_holiday` boolean,
`out_is_longweekends` boolean,
`in_is_holiday` boolean,
`in_is_longweekends` boolean)
PARTITIONED BY (
`querydestinationplace` string,
`querydatetime` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://xxx/flights-test/'
TBLPROPERTIES (...)
Уведомление
PARTITIONED BY (
`querydestinationplace` string,
`querydatetime` string)
Должны ли столбцы раздела всегда быть строковыми?На самом деле querydestinationplace
должен быть типом int.Будет ли этот тип строки менее эффективным, чем Int или Date?