Удалить таблицу данных, если она старше 30 дней - PullRequest
1 голос
/ 19 января 2020

Я хотел бы удалить таблицы данных SQL БД, если таблица была создана более чем за 30 дней до go. Как получить таблицу, созданную datetime из блоков данных?

Спасибо

Ответы [ 2 ]

1 голос
/ 21 января 2020

Учитывая tableName, самый простой способ получить время создания выглядит следующим образом:

import org.apache.spark.sql.catalyst.TableIdentifier

val createdAtMillis = spark.sessionState.catalog
  .getTempViewOrPermanentTableMetadata(new TableIdentifier(tableName))
  .createTime

getTempViewOrPermanentTableMetadata() возвращает CatalogTable, который содержит такую ​​информацию, как:

CatalogTable(
Database: default
Table: dimension_npi
Owner: root
Created Time: Fri Jan 10 23:37:18 UTC 2020
Last Access: Thu Jan 01 00:00:00 UTC 1970
Created By: Spark 2.4.4
Type: MANAGED
Provider: parquet
Num Buckets: 8
Bucket Columns: [`npi`]
Sort Columns: [`npi`]
Table Properties: [transient_lastDdlTime=1578699438]
Location: dbfs:/user/hive/warehouse/dimension_npi
Serde Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
Schema: root
 |-- npi: integer (nullable = true)
 ...
)

Вы можете перечислить все таблицы в базе данных, используя sessionCatalog.listTables(database).

Существуют альтернативные способы сделать то же самое, но с гораздо большим усилием и риском ошибок из-за изменений поведения Spark: изучать метаданные таблицы с помощью SQL и / или обход местоположений, в которых хранятся таблицы, и просмотр временных меток файлов. Вот почему лучше всего go через API каталога.

Надеюсь, это поможет.

0 голосов
/ 20 января 2020

Предполагая, что ваша таблица БД является дельта:

Вы можете использовать DESCRIBE HISTORY <database>.<table> для извлечения всех транзакций, выполненных в этой таблице, включая временные метки. Согласно документации для базы данных - история сохраняется только 30 дней. В зависимости от того, как вы планируете реализовать свое решение, оно может просто работать.

...