gpt4 book ai didi

java - BigQuery - 通过 java 进行流式传输非常慢

转载 作者:行者123 更新时间:2023-12-01 08:50:04 25 4
gpt4 key购买 nike

我正在尝试使用基于 Google 的 Java 将数据从 kafka 安装流式传输到 BigQuery samples 。数据是长度约为 12K 的 JSON 行。我将它们分成 500 个 block (大约 6Mb)并将它们流式传输为:

InsertAllRequest.Builder builder = InsertAllRequest.newBuilder(tableId);

for (String record : bqStreamingPacket.getRecords()) {
Map<String, Object> mapObject = objectMapper.readValue(record.replaceAll("\\{,", "{"), new TypeReference<Map<String, Object>>() {});

// remove nulls
mapObject.values().removeIf(Objects::isNull);

// create an id for each row - use to retry / avoid duplication
builder.addRow(String.valueOf(System.nanoTime()), mapObject);
}

insertAllRequest = builder.build();

...


BigQueryOptions bigQueryOptions = BigQueryOptions.newBuilder().
setCredentials(Credentials.getAppCredentials()).build();

BigQuery bigQuery = bigQueryOptions.getService();

InsertAllResponse insertAllResponse = bigQuery.insertAll(insertAllRequest);

我发现每次调用的插入时间为 3-5 秒。不用说,这使得 BQ 流变得不太有用。从他们的文档中,我担心会达到每个表的插入配额(我以大约 100 万行/分钟的速度从 Kafka 进行流式传输),但现在我很乐意解决这个问题。

所有行插入正常。没有错误。

我的这个设置一定是做错了什么。请指教。

最佳答案

我们测量每个流式传输请求的时间为 1200-2500 毫秒,这在过去三年中是一致的,正如您在图表中看到的那样,我们从 Softlayer 流式传输到 Google。

enter image description here

尝试将数字从数百行更改为数千行,或者直到达到一些 streaming api limits并测量每个调用。

基于此,您可以推断更多信息,例如您与 BigQuery API 之间的带宽问题、延迟、SSL 握手,并最终针对您的环境进行优化。

您还可以留下您的项目 ID/表,也许某些 Google 工程师会检查它。

关于java - BigQuery - 通过 java 进行流式传输非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42449649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com