问题标签 [google-cloud-dataflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1125 浏览

google-cloud-datastore - 使用 DatastoreIO 的 Google Dataflow 问题

我正在尝试从 Dataflow (DatastoreIO) 读取包含 300k 条记录的 Datastore 表,并从 Datastore API 收到以下错误。

400 Bad Request 复合过滤器必须至少有一个子过滤器

代码:

错误(退出前发生 4 次):

这带来了其他问题:

1 - 在这种情况下,我应该定义一个过滤器吗?

2 - Dataflow 用于拆分作业的标准是什么?

3 - 有没有更简单的方法从 Datastore 转储大表?

谢谢。

0 投票
1 回答
574 浏览

google-cloud-dataflow - 从工厂方法 AvroCoder.of 构造实例失败?

我正在使用 AvroCoder.class 来序列化我的数据结构。我的代码如下所示:

当我尝试运行我的管道时,出现以下异常:

我该如何解决这个异常?我正在尝试在测试中运行我的管道。我正在使用 TestPipeline 创建和运行我的测试。

0 投票
1 回答
155 浏览

google-cloud-dataflow - 如何为滑动窗口编写单元测试?

Dataflow 是否为我提供了设置第一个窗口起点的方法?或者是否有计算起点的公式?

我正在尝试为应用 SlidingWindow、GroupByKey 和 DoFn 的复合转换编写单元测试。

我的窗户将是

其中 To 是第一个窗口的开始, period 是窗口的周期,duration 是窗口的持续时间。

因此,在不知道 To 的情况下,我无法预先计算输出中的预期值并将它们传递给 DataflowAssert 以验证结果。

0 投票
3 回答
2082 浏览

java - BigQuery、TableRow:使用 java api 访问重复记录

我正在通过 java API 和新服务 Dataflow 访问 BigQuery 数据。我希望 TableRow 类具有以下方法:

  • 返回 TableCell 实例的列表(在重复字段的情况下)
  • 返回一个 TableRow 实例(在嵌套字段的情况下)
  • 返回 TableRow 实例的列表(在重复嵌套字段的情况下)

但是我只找到了使用 get 方法访问 TableRow 实例的字段的示例代码,这并不方便,因为输出是 Object 类的实例。

目前我看到的唯一解决方案是解析我从 get 方法获得的字符串并自己构建一个 TableRow 对象,但我想知道是否有人有更好的解决方案可以分享?

非常感谢。

0 投票
2 回答
399 浏览

google-cloud-dataflow - 如何通过我的数据流的输出附加标题行?

我正在生成一个带有数据流的输出 CSV 文件,我想写一个标题行,然后将我的所有输出附加到该行。我该怎么做呢?

我的流程大致是这样的:

谢谢!

0 投票
1 回答
645 浏览

java - 在 Google Cloud Dataflow 中使用具有复杂 PCollection 类型的 TextIO.Write

我有一个看起来像这样的 PCollection:

我的目标是把它写成一个文本文件。我想使用类似的东西:

但我很难正确设置编码器。这是我认为可行的:

其中 TextualLongCoder 是我自己的 AtomicCoder 子类,类似于 TextualIntegerCoder。EventSession 类被注释为使用 AvroDeterministicCoder 作为它的默认编码器。

但是有了这个,我得到了包括非文本字符等在内的乱码输出。有人可以建议你如何将这个特定的 PCollection 写成文本吗?我敢肯定我在这里遗漏了一些明显的东西......

0 投票
1 回答
1564 浏览

key-value - 如何从一个输出所有值对,按键分组,使用 Google Dataflow

我正在尝试做一些看起来相对简单但遇到一些困难的事情。

我有一堆文本,每一行都是一个值。我分析每一行文本,创建适当的密钥,然后发出 KV 对。然后我使用GroupByKey变换。最后,我想输出现在按键分组的所有文本(如果我可以为每个键获取一个文本文件,则加分,但我不确定这是否可能)。

这是管道的apply样子:

不幸的是,我无法FormatOutputFn()按要求工作。

迭代Iterable<String>并输出每个值并不能保证键值分组(如果我对此有误,请纠正我,然后我的问题就解决了)。然后我尝试使用StringBuilder(),它适用于小型数据集,但不出所料地java.lang.OutOfMemoryError: Java heap space在较大数据的日志中生成错误。我也尝试了Flatten.FlattenIterables转换,但这也不起作用,因为 K,V 对中的值不是 a PCollection,而只是一个常规Iterable

我已经看过这个关于通过 common key 分析的问题,但是从答案来看,我并不完全清楚我应该如何处理我的情况。我想我必须使用Combine.PerKey,但我不确定如何使用它。我还假设必须有一种预烘焙的方式来做到这一点,但我在文档中找不到这种预烘焙的方式。我确定我只是没有找对地方。

而且,如上所述,如果有一种方法可以获取文本文件输出,其中文本文件的名称是键并且值都在文件中,那将是惊人的。但我不认为 Dataflow 可以做到这一点(还没有?)。

感谢您的阅读。

0 投票
1 回答
235 浏览

java - 编译依赖于版本 0.3.150227 google-cloud-dataflow-java-sdk-all 的 gradle 项目时出错

我正在开发一个使用 Google Cloud Data 流的 Java 应用程序,并且在尝试使用 gradle 进行编译时遇到错误。

build.gradle 中的 Dependencies 部分是:

}

我得到的错误是:

无法解析 com.google.cloud.dataflow:google-cloud-dataflow-java-proto-library-all:0.3.150206。要求::telstra-targetingserver-cdf-cptmappings:0.0.1 > com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:0.3.150227

无法解析 POM https://repo1.maven.org/maven2/com/google/cloud/dataflow/google-cloud-dataflow-java-proto-library-all/0.3.150206/google-cloud-dataflow-java- proto-library-all-0.3.150206.pom 找不到 com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-parent:LATEST。在以下位置搜索:file:/Users/pablocaif/.m2/repository/com/google/cloud/dataflow/google-cloud-dataflow-java-sdk-parent/LATEST/google-cloud-dataflow-java-sdk- parent-LATEST.pom 文件:/Users/pablocaif/.m2/repository/com/google/cloud/dataflow/google-cloud-dataflow-java-sdk-parent/LATEST/google-cloud-dataflow-java-sdk-parent -LATEST.jar https://repo1.maven.org/maven2/com/google/cloud/dataflow/google-cloud-dataflow-java-sdk-parent/LATEST/google-cloud-dataflow-java-sdk-parent-LATEST.pom https ://repo1.maven.org/maven2/com/google/cloud/dataflow/google-cloud-dataflow-java-sdk-parent/LATEST/google-cloud-dataflow-java-sdk-parent-LATEST.jar

https://repo1.maven.org/maven2/com/google/cloud/dataflow/google-cloud-dataflow-java-sdk-parent/中似乎缺少 LATEST

此时的内容是: 在此处输入图像描述

0 投票
1 回答
173 浏览

google-bigquery - 通过 Dataflow Java API 返回客户端的不一致 BigQuery 数据类型

给定 BigQuery 表:

在此处输入图像描述

以及以下客户端代码:

它产生:

为什么为 INTEGER 返回字符串?

为什么为 FLOAT 返回 Double?

0 投票
1 回答
1466 浏览

google-bigquery - 谷歌云数据流中的动态分区?

我正在使用数据流来处理存储在 GCS 中的文件并写入 Bigquery 表。以下是我的要求:

  1. 输入文件包含事件记录,每条记录属于一个事件类型;
  2. 需要按 eventType 对记录进行分区;
  3. 对于每个 eventType 输出/写入记录到相应的 Bigquery 表,每个 eventType 一个表。
  4. 每个批处理输入文件中的事件有所不同;

我正在考虑应用诸如“groupByKey”和“partition”之类的转换,但是似乎我必须在开发时知道确定分区所需的事件数量(和类型)。

你们有一个好主意来显着地进行分区吗?意味着分区可以在运行时确定?