Spark помечает имена файлов с целью возможного последующего удаления / отката? - PullRequest
0 голосов
/ 31 января 2019

Я использую Spark 2.4 в AWS EMR.Я использую Pyspark и SparkSQL для своего ELT / ETL и использую DataFrames с входом и выходом Parquet на AWS S3.

Начиная с Spark 2.4 , насколько я знаю, нет никакого способапометить или настроить имя файла выходных файлов (паркет).Пожалуйста, исправьте меня?

Когда я сохраняю выходные файлы паркета на S3, я получаю имена файлов, которые выглядят так:

part-43130-4fb6c57e-d43b-42bd-afe5-3970b3ae941c.c000.snappy.parquet

Средняя часть имени файла выглядит так, как будто имеет встроенный GUID / UUID:

part-43130- 4fb6c57e-d43b-42bd-afe5-3970b3ae941c .c000.snappy.parquet

Я хотел бы знать, могу ли я получить это значение GUID / UUID из PySpark или SparkSQLфункция в время выполнения , чтобы зарегистрировать / сохранить / отобразить это значение в текстовом файле?

Мне нужно зарегистрировать это значение GUID / UUID, потому что мне может понадобиться позднее удалить файлы сэто значение, как часть их имен, для целей ручного отката (например, через день или неделю я могу обнаружить, что эти данные каким-то образом повреждены и должны быть удалены, поэтому все файлы, помеченные GUID / UUID, могут быть идентифицированы иудалены).

Я знаю, что могу разделить таблицу вручную на столбце GUID, но потом у меня слишком много разделов, что снижает производительность.Мне нужно как-то пометить файлы для каждого задания загрузки данных, чтобы я мог легко их идентифицировать и удалить из S3, поэтому значение GUID / UUID представляется одним из возможных решений.

Открыто для любых других предложений.

Спасибо

1 Ответ

0 голосов
/ 31 января 2019

Это с новым "конкретным коммиттером s3a"?Если это так, это означает, что они используют код / ​​уловку netflix для использования идентификатора GUID для каждого файла, написанного во избежание возможных проблем с согласованностью.Это не очень помогает, хотя.

  1. рассмотрите возможность предложить для Spark патч, позволяющий добавить определенный префикс к имени файла.
  2. Или для Apache Hadoop & Spark (т.е. не EMR), вариант для S3Aкоммиттеры, чтобы вставить этот префикс, когда они генерируют временные имена файлов.

Краткосрочные: ну, вы всегда можете перечислить состояние до и после дерева каталогов (совет: используйте FileSystem.listFiles (путь(рекурсивный) для скорости) и либо запомните новые файлы, либо переименуйте их (что будет медленно: лучше запомнить новые имена файлов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...