Мне нужно прочитать файл из хранилища Google Cloud и разделить его на несколько файлов на основе transaction_date, который является полем в файле. Размер файла составляет около 6 ТБ (разбит на несколько файлов). Каковы наиболее эффективные способы достижения этого? Должен ли я использовать Dataflow или Dataproc, любой другой простой способ сделать это?Google облако хранения - разделение файлов по значению в файле
0
A
ответ
1
Я принимаю это за то, что вы хотите написать отдельный (заштрихованный) файл за transaction_date
. Прямой поддержки нет в TextIO.Write
, который поставляется с Dataflow, но поскольку это похоже на то, что у вас есть специальный случай, когда вы знаете диапазон дат, вы вручную создаете ~ 11 различных фильтрованных преобразований TextIO.Write
.
PCollection<Record> input = ...
for (Date transaction_date : known_transaction_dates) {
input.apply(Filter.by(<record has this date>)
.apply(TextIO.Write.to(
String.format("gs://my-bucket/output/%s", transaction_date)));
}
Это, безусловно, не идеально. Для BigQueryIO
есть функция записи в другую таблицу на основе оконного ввода данных - аналогичная функциональность, добавленная к TextIO
, может адресовать ваш прецедент. В противном случае зависящие от данных записи различного рода находятся на нашем радаре и включают такие случаи, как ваш.
Приблизительно, сколько записей вы ожидаете иметь за транзакционную_дату? И каков формат файла вашего формата ввода, и планируете ли вы такой же формат файла для вывода? (Является ли это CSV с перекрестными линиями или JSON или что-то подобное?) –
90% данных относятся к одной дате, остальные 10% распространяются на 10 дней. CSV с новой строкой, я планирую на выходе тот же формат. Просто нужно добавить один файл в 11 файлов (90% сегодня + 10% за последние 10 дней). –
Вам нужны все записи, связанные с одной транзакционной_дачей в * одном * файле, или вы просто хотите организовать ее таким образом, чтобы вы могли легко получить все данные для даты транзакции, возможно, путем организации в файлы меньшего размера делится на другой каталог на дату транзакции? –