Я пытаюсь обработать файл CSV 6 ГБ (750 МБ в ГЦ), используя задания потока данных GCP.Я использую machineType как n1-standard-4, который составляет 15 ГБ оперативной памяти с 4vCPU.
Код потока моих данных
PCollection<TableRow> tableRow = lines.apply("ToTableRow", ParDo.of(new
StringToRowConverter()));
static class StringToRowConverter extends DoFn<String, TableRow> {
private static final long serialVersionUID = 1L;
@ProcessElement
public void processElement(ProcessContext c) {
String inputLine = c.element();
String[] split = inputLine.split(",");
TableRow output = new TableRow();
c.output(new TableRow().set("id", split[0]).set("apppackage", split[1]));
}
}
- Моя работа выполняется с последних 2 часов и до сих пор не обработана.
- Когда я вручную разбиваю этот большой файл на мелкие части, он работает нормально.
- Мне нужно обработать 400 ГБ сжатых файлов, чтобы поместить их в bigquery. Все сжатые файлы находятся в хранилище GCP.
Мой запрос: если только 6 ГБ файл обрабатывается так много времени, как я могу обработать 400 ГБ сжатых файлов?
Есть ли способ оптимизировать этот процесс, чтобы я могчтобы вставить эти данные в мой BQ.