Обработка больших CSV с использованием заданий потока данных - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь обработать файл 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]));
         }
}
  1. Моя работа выполняется с последних 2 часов и до сих пор не обработана.
  2. Когда я вручную разбиваю этот большой файл на мелкие части, он работает нормально.
  3. Мне нужно обработать 400 ГБ сжатых файлов, чтобы поместить их в bigquery. Все сжатые файлы находятся в хранилище GCP.

Мой запрос: если только 6 ГБ файл обрабатывается так много времени, как я могу обработать 400 ГБ сжатых файлов?

Есть ли способ оптимизировать этот процесс, чтобы я могчтобы вставить эти данные в мой BQ.

1 Ответ

0 голосов
/ 11 мая 2018

6 ГБ в CSV - это не так много данных .CSV - это просто неэффективный способ хранения числовых данных, а для данных, похожих на строки, он все еще несет значительные накладные расходы и его трудно анализировать, и невозможно найти конкретные позиции в состоянии покоя (необходимо проанализировать в первую очередь).Таким образом, мы можем быть довольно оптимистичными, что это действительно сработает, с точки зрения данных.Это проблема импорта.

Не катите свой собственный анализатор.Например: как насчет полей, которые содержат , в их тексте?Есть достаточно парсеров CSV.

Вы говорите, что хотите поместить эти данные в свою BigQuery - так что следуйте по пути Google и следуйте:

https://cloud.google.com/bigquery/docs/loading-data-local#bigquery-import-file-java

, поскольку bigquery уже поставляется сэто собственный Builder, который поддерживает CSV.

...