【发布时间】:2021-04-18 11:48:56
【问题描述】:
我有一个名为 transactions(简称为 txs)的表,其中包含 1500 万行 PARTITIONED BY txs.year 用于过去 10 年累积的数据(大约 1 到 150 万行/年)。此数据的来源是 MySQL 数据库,唯一更改的数据是 current year 的数据。我的策略是设置一个每日 CRON 作业,以压缩 CSV 格式(即 20XX-txs.csv.gz)导出 current year 的所有记录,然后使用 AWS Glue/PySpark 将其转换为 snappy.parquet 格式 PARTITIONED BY txs.year。
我了解到您可以使用 ClickHouse (reference) 轻松地 DROP PARTITIONS。一件事让我没有任何进一步的解释。他们的文档指出:
从表中删除指定的分区。此查询标记 分区为非活动并完全删除数据,大约在 10 分钟。
我想知道的是:
- 10 分钟 部分从何而来?从我的测试中,我看到分区立即消失了。
- 我可以
INSERT更新新创建的snappy.parquet分区之后的数据吗DROPPINGcurrent_year的陈旧分区之后,或者我必须等待整整 10 分钟才能执行是吗?
示例用例:
# STEP 1: Get updated data for current_year
# -----------------------------------------
$ wget https://s3.amazonaws.com/xxx.xxx/2021-txs.snappy.parquet
# STEP 2: Drop existing PARTITION for current_year
# -----------------------------------------
$ clickhouse-client --query="ALTER TABLE txs DROP PARTITION '2021'"
# STEP 3: INSERT updated data for current_year into the table
# -----------------------------------------
$ cat 2021-txs.snappy.parquet | clickhouse-client --query="INSERT INTO txs FORMAT Parquet"
【问题讨论】:
标签: pyspark parquet clickhouse