【发布时间】:2018-10-21 12:02:35
【问题描述】:
我正在尝试使用 GCP 数据流作业处理 6GB CSV 文件(在 GZ 中为 750 MB)。我使用 machineType 作为 n1-standard-4,它是 15GB RAM 大小和 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 小时以来一直在运行,但仍未处理。
- 一旦我手动将这个大文件分成小部分,它就可以正常工作。
- 我必须处理 400GB 的压缩文件才能放入 bigquery。所有压缩文件都在 GCP 存储中。
我的问题是如果在这么长时间内只处理 6GB 文件,我该如何处理 400GB 的压缩文件?
有什么方法可以优化这个过程,以便我能够在我的 BQ 中插入这些数据。
【问题讨论】:
标签: java google-cloud-platform google-bigquery google-cloud-dataflow