数据流作业(id 2017-01-15_19_15_22-2979660111155895381)失败,出现以下错误,我们不知道发生此错误的原因。我们每天从同一台机器上运行约100个数据流作业,并且几乎在同一时间(之前和之后)成功启动了其他作业,因此我认为这不是因为谷歌云服务帐户(尽管错误消息表明是这样)。
数据流团队是否能够挖掘并让我们知道发生了什么
(ce2f98d99f483fed): Staged package commons-codec-1.6-WXD1SIO0gxskuX8RJbo
在DirectRunner上测试了我的管道,一切正常。
现在我想在DataflowRunner上运行它。它不起作用。它甚至在输入我的管道代码之前就失败了,我完全被stackdriver中的日志淹没了——只是不明白它们的意思,也不知道到底出了什么问题
执行图看起来很好
工作线程池启动,1个工作线程尝试运行整个安装过程,但看起来从未成功
我猜一些日志可能会为调试提供有用的信息:
AttributeError:'module'对象没有属性'NativeSource'
/usr/bin/python失
我目前正在尝试基于ApacheBeamSDK v2.1.0创建数据流模板,如
这是我的主课
public static void main(String[] args) {
// Initialize options
DispatcherOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().as(DispatcherOptions.class);
// Create p
我正在努力完成云数据流教程。我可以在本地运行它,以前我可以远程执行它,但今天我开始出现以下错误
我在跑步
mvn compile exec:java \
-Dexec.mainClass=com.example.WordCount \
-Dexec.args="--project=list-cleaner\
--stagingLocation=gs://disismybucket/staging/ \
--output=gs://disismyb
我有两条流式管道在制作中运行,到目前为止没有问题(都是n1-standard-4)。然而,当我决定尝试自动缩放时,它给了我所说的错误。我试过使用普通的自动缩放和流媒体引擎(使用n2-highmem1、n1-highmen1),但都不起作用
这是我的管道结构。这是BigQuery的Pubsub。
根据粘贴的日志,您的一些ParDo函数或MapElement可能会消耗更多的内存,请查看PubSubroAnalyticStablerRowfn。
这个beam文档可能会帮助您调整管道。显然,我发现问题
我有云数据流工作,将数据从Oracle拉到具有VPC/VPN设置的GCP项目中的Google CloudSQL。使用Composer计划此数据流作业并定期执行。工作正常,但有时数据流作业执行成功,但数据未移动到CloudSQL。日志中没有任何错误/特定事件。很奇怪…这种情况很少见。。。如果有人建议找出这个案件的根本原因,那就好了
这是数据流操作符的定义
dataFlowStatus = DataFlowJavaOperator( task_id='dataflowlabelstatus', ja
我注意到有一个选项允许指定机器类型。
我应该使用什么标准来决定是否覆盖默认的机器类型
在一些实验中,我看到较小实例的吞吐量更好,但另一方面,当使用许多较小实例而不是较少的默认实例时,作业往往会经历更多的系统故障
谢谢,
数据流最终将为您优化机器类型。同时,这里有一些场景,我可以想到您可能希望在哪里更改机器类型
如果您的ParDO操作需要大量内存,您可能希望将机器类型更改为Google Compute Engine提供的高内存机器之一
优化成本和速度。如果您的CPU利用率低于100%,您可以选择一
我注意到,在我的工作中,吞吐量(每秒报告的记录数)在“分组”之后显著降低。
当执行该工作流步骤时,我看到一些实例的CPU利用率约为30%,而有些实例似乎处于空闲状态
这是一个数据流问题,还是我应该以某种方式指示工作流增加此步骤的并行性
谢谢,
G如果不知道管道正在做什么,就很难确定发生了什么
一般来说,吞吐量(记录数/秒)取决于以下几个因素:
记录的大小
您的ParDo执行的处理量
通常,GroupByKey构造一个较大的记录,该记录由一个键和该键的所有值组成;i、 e.输入是千伏的集合,输
我正在尝试使用google cloud dataflow从GCS读取数据并加载到BigQuery表,但是GCS中的文件是压缩的(gzip),是否有任何类可用于从压缩/gzip文件读取数据
谢谢 数据流现在支持从压缩文本源读取数据(从开始)。具体而言,通过指定压缩类型,可以读取使用gzip和bzip2压缩的文件:
TextIO.Read.from(myFileName).withCompressionType(TextIO.CompressionType.GZIP)
但是,如果文件扩展名为.gz
我目前有一个流式管道处理事件,并将它们推送到名为EventsTable的BigQuery表:
TransactionID EventType
1 typeA
1 typeB
1 typeB
1 typeC
2 typeA
2 typeC
3 typeA
TransactionID事件
在最近的事件中,一个完整的AZ可能会因停机而丢失,我想更好地了解数据流故障切换过程
当我手动删除数据流作业(Streaming、PubSub到BigQuery)的工作节点时,它们已成功地重新创建/重新启动,但数据流进程本身尚未恢复
尽管所有状态都正常,但数据项没有流动
重新启动流的唯一方法是取消作业并再次提交
即使我知道手动删除不是有效的测试,我们也不能忽略人为错误的因素
我的理解是,工作流应该自动重新启动,但这里没有观察到这种情况
我错过了什么?数据流确实依赖GCE来恢复物理故障,因此我们不支
我不熟悉数据流,所以这可能是一个简单的问题
我想试试会话窗口策略。根据windowing文档,在我们完成GroupByKey之前,不会应用windowing,所以我正在尝试这样做
然而,当我在Google云平台中查看我的管道时,我可以看到MapElements返回元素,但GroupByKey没有返回任何元素(“添加的元素:-”)。按键分组时我做错了什么
以下是代码中最相关的部分:
events = events
.apply(Window.named("eventsSessionsWindo
以下管道与DirectRunner一起工作,但与DataflowRunner一起引发以下异常。
如何调试此类错误?这对我来说似乎是相当不透明的
p = beam.Pipeline("DataflowRunner", argv=[
'--project', project,
'--staging_location', staging_location,
'--temp_location', temp_location,
'--output', output_gcs
我目前有一项工作,将pubsub主题的内容输出到一个云存储文件夹,如果我直接启动jar,这个文件夹就可以正常工作
但是,每当我尝试使用上载的模板启动作业时,都不会有消息通过管道
它与非常相似,只是它接受订阅而不是主题
以下是我的配置:
trait Options extends PipelineOptions with StreamingOptions {
@Description("The Cloud Pub/Sub subscription to read from")
@Defau
我正试图编写一个脚本来自动化Java数据流作业的部署。脚本创建一个模板,然后使用命令
gcloud dataflow jobs run my-job --gcs-location=gs://my_bucket/template
问题是,如果作业已经存在并且正在运行,我想更新作业。如果我通过maven运行作业,我可以进行更新,但我需要通过gcloud进行更新,这样我就可以拥有一个用于部署的服务帐户和另一个用于运行作业的服务帐户。我尝试了不同的方法(向命令行添加--parameters updat
我目前正试图在谷歌云上创建一个数据流模板,其指导思想是
唯一需要注意的是,my Beam管道是在TensorFlow Extended的Beam编排模块的帮助下创建的,特别是tfx.orchestration.pipeline。创建管道的函数如下所示:
def create_pipeline(pipeline_name, pipeline_root, data_root, transform_module, train_module, serving_root,
我有一个有状态的DoFn,它基本上对即将到来的元素进行批处理,当缓冲区达到一定大小时,缓冲区被清除,元素被插入到BigQuery中。我注意到,管道有时会引发异常,异常不会停止作业运行。以下是堆栈跟踪:
Error message from worker: generic::unknown: Traceback (most recent call last):
File "apache_beam/runners/common.py", line 1213, in apac
我有一项工作,其中包括将从文件中读取的一些数据插入BigQuery表,以便以后手动分析
它失败,出现以下错误:
job error: Too many sources provided: 10001. Limit is 10000., error: Too many sources provided: 10001. Limit is 10000.
它指的是什么“来源”?这是文件还是管道步骤
谢谢,
G我猜错误来自BigQuery,这意味着我们在创建输出表时试图上载过多的文件
您能否提供有关错误
我想知道为什么将#sideInput()方法移动到ProcessContext类?
以前,我可以在#startBundle()方法中进行一些额外的处理,并缓存结果。
在#processElement()中这样做听起来效率较低。当然,我可以在将数据传递到视图之前进行预处理,但是对于每个元素调用#sideInput()仍然会有开销
谢谢,
这是个好问题。原因是我们增加了对窗口化PCollection作为侧输入的支持。这将启用其他场景,包括在流模式下使用具有无界PCollection的边输入
在更改之
有人能举一个简单的子类化FileBasedSource的例子吗?我是谷歌数据流新手,对Java非常缺乏经验。我的目标是在将行号作为键的同时读取文件,或者根据行号跳过行 的实现是理解基于文件的源如何工作的一个很好的起点。您的阅读器可能需要类似的内容(其中readNextLine()读取到行尾并更新偏移量):
我用完整的示例创建了一个要点,它可能比XMLSource更简单。老实说,我发现XMLSource示例很难理解,因为它增加了XML的复杂性,增加了读取文件的问题。我必须想办法“减少”。但我找不到
是否可以延迟确认,直到子图(PubSubIO.Read下面的所有内容)成功处理
例如,我们正在对google pubsub订阅进行流式处理读取,然后将文件写入GCS,在另一个分支中,我们正在使用BigQueryIO.Write向BigQuery写入
我们确实看到,如果发生异常,它将无限期地重试,因为我们处于流模式。但是,如果我们取消作业并使用代码更改重新部署,则不会重新处理消息。一旦消息持久保存在数据流管道中的某个位置,就会确认消息。如果您想在不丢失传输中数据的情况下对管道进行更改,请使用更新功
apachebeam最近通过StateSpec和@StateId注释引入了Apache-Flink和Google-Cloud数据流的部分支持
我找不到任何关于与全局窗口一起使用时会发生什么的文档。特别是,是否有一种方法可以使用“状态垃圾收集”机制来消除根据某些配置已经有一段时间没有看到的密钥的状态,同时仍然保持频繁看到的密钥的单个始终状态
或者,在这种情况下使用的状态量是否会出现分歧,无法回收与一段时间内未看到的密钥对应的状态
我还对apacheflink或googleclouddataflow
有没有办法处理“数据流SDK导致的未处理错误”?
具体地说,我们有一个数据流作业,它将gz文件列表(在GCS中)作为输入,并生成一些输出。
偶尔会有一个gz文件损坏,作业因此而失败。
我们想知道是否有一种方法来处理这个问题——具体来说,我们希望这样做,作业将忽略这些损坏的文件并继续。
不清楚我们是否能够捕获由于gz文件损坏而引发的异常(因为它似乎是在Dataflow SDK中处理的,导致它失败)
(对于谷歌数据流团队:这里有一个特定的数据流作业id:2017-04-02_05_08_20-549
我试图获取从云函数传递到数据流模板的属性的值。我收到错误,因为传递的值是一个包装器,并且在编译期间使用.get()方法失败。由于这个错误
执行Java类时发生异常。null:InvocationTargetException:未从运行时上下文调用。
public interface MyOptions extends DataflowPipelineOptions {
...
@Description("schema of csv file")
ValueProvider<String&g
对于一个非常简单的管道,我们发现Dataflow SDK 1.9和2.0/2.1之间有一个非常奇怪的差异
我们有CoGroupByKey步骤,它通过键连接两个pcollection并输出两个pcollection(通过TupleTags)。例如,一个PCollection可能包含{“str1”,“str2”},另一个可能包含{“str3”}
这两个PCollection被写入GCS(在不同的位置),它们的并集(基本上,通过在两个PCollection上应用展平生成的PCollection)将由管
我的数据流作业失败,出现一些神秘消息:java.lang.NullPointerException:nextReportIndex在发送更新时应为非null
有人知道那是什么吗
Apache Beam 2.5.0,Java SDK
{
insertId: "5262797621023523329:315192:0:1849696"
jsonPayload: {
exception: "java.lang.NullPointerException: nextReportIndex
我正在寻找从模板开始Google数据流作业的方法。我找到了RESTAPI来实现这一点,并深入到api页面
并且只找到了RESTAPI来执行此操作。我想知道是否有像我们在存储中所做的那样的java客户端,比如
Storage Storage=StorageOptions.newBuilder().setCredentials(credentials.build().getService()
也许我忽略了。但是Java和Python的Api看起来像是关于Beam管道没有启动作业的所有内容。最接近的是
ApacheBeam有大量优秀的文档,但我没有看到创建管道所运行的代码与worker运行的代码相比。我想我看到这段代码将运行一次,但它也将由每个启动的工人运行
publicstaticvoidmain(字符串[]args){
//创建管道。
管道选项=
PipelineOptionFactory.fromArgs(args.create();
Pipeline p=Pipeline.create(选项);
//通过应用“读取”转换创建PCollection“行”。
p收集线=p应用(
“Read
我们的要求是处理Google DFP直接写入我们的GCS存储桶的最后24小时的AdService日志
我们目前通过使用扁平化来实现这一点,并传入过去24小时内的所有文件名。文件名为yyyyMMdd_hh格式
但是,我们发现,有时DFP在几个小时内无法写入文件。我们已经向DFP的人提出了这个问题
然而,有没有一种方法可以将我们的数据流作业配置为忽略任何丢失的GCS文件,并且在这种情况下不会失败?如果一个或多个文件不存在,则当前将失败 也许不是最好的答案,但你可以随时使用
GcsUtilFactor
我遇到的问题是,当我从带有空值的GBQ读取数据时,如果我试图用空值列映射任何函数,它将给出错误
当我将输入_数据从GBQ写入文本时,json输出文件中没有空值的键。我认为这是一个需要解决的问题
例如:
-输入
按键1、按键2、按键3
值1,值3
预期产出:
{“key_1”:“value_1”,“key_2”:null,“key_3”:“value_3”}
数据流的输出
{“键1”:“值1”,“键3”:“值3”}
目前,我们在数据流级别上做不了多少事情。正如您所指出的,来自BigQ
我正在使用Java云数据流SDK,并且正在进行一些端到端测试
@Test
public void testEndtoEnd() throws Exception {
TupleTag<Entity> tag1 = aTagFromElsewhere1;
TupleTag<Entity> tag2 = aTagFromElsewhere2;
TupleTagList tags = TupleTagList.of(tag
到今天为止,由于在Dataflow SDK for Java中定位许多关键类时出错,我得到了用于正确编译的现有代码的构建中断。例如:
[ERROR] /tmp/first-dataflow/src/main/java/com/google/cloud/dataflow/examples/common/DataflowExampleUtils.java:[30,37] cannot find symbol
[ERROR] symbol: class Pipeline
[ERROR] locat
在我使用云控制台ssh之后
我用docker ps列出了容器
然后做了下面的事情
docker exec-it jstack,但它抛出以下错误
rpc错误:code=2 desc=“oci运行时错误:exec失败:exec:
\“jstack\”:在$PATH中找不到可执行文件
我也没有在容器内找到jstack。
因此,有没有一种简单的方法可以对云数据流javastreaming进程进行线程转储。数据流工作者在端口8081上托管一个本地调试http服务器。当您ssh到工作者时,您可以执行curl
我试图通过调用数据流模板,但是,当在正文中指定参数时,将抛出无效的\u参数错误。删除参数字段后,它工作正常。我尝试了Javascript和Python,但得到了完全相同的错误
from googleapiclient.discovery import build
from oauth2client.client import GoogleCredentials
def invoke_dataflow_job():
credentials = GoogleCredentials.get_
我有一份谷歌云数据流的工作,我想使用特定的spacymodelneural coref从文本中提取命名实体
在不使用beam的情况下运行提取时,我可以提取实体,但当我尝试使用DirectRunner运行时,由于msgpack中的序列化错误,作业失败。我不知道如何继续调试这个问题
我的要求非常简单,包括:
apache-beam[gcp]==2.4
spacy==2.0.12
ujson==1.35
问题可能与spacy和beam是如何相互作用的有关,因为stacktrace显示spacy喷出了
我编写了一个管道,其中包含一个输入pub/sub流。我想用-update或-jobName选项修改它。发布/订阅和整个管道中的数据发生了什么变化
2我必须关闭管道,原因如下:a几小时或b几天。是否可以以某种简单的方式将此数据重放到重新启动的管道中,以便以流模式像以前一样处理所有内容。我听说您可以重播pub/sub 7天。1如果您更新流媒体管道,现在运行的管道将停止从pubsub提取数据,并在启动新管道之前保存中间窗口状态。因此,不会出现数据丢失或重复
2当前数据流不支持恢复的管道执行
在使用dataflow runner运行beam java sdk模型时,我遇到以下错误
java.lang.IllegalArgumentException: Class interface org.apache.beam.sdk.options.PipelineOptions missing a property named 'output'.
at org.apache.beam.sdk.options.PipelineOptionsFactory.parseObjects(Pipelin
在这方面,我们知道
PCollection行=p.apply(TextIO.read()
.from(“gs://some bucket/many/files/*”)
.WithintMatchesManyFiles());
使用此提示会使转换以一种为读取大型数据而优化的方式执行
文件数量:在这种情况下,可以读取的文件数量实际上是无限的,
而且最有可能的是,管道将比没有这一暗示运行得更快、更便宜、更可靠
然而,管道的步骤被代码卡住,如下所示
PCollection line=pipeline.
有些数据流模板支持将数据文件的列分隔符作为可选参数(例如,将文本文件加载到扳手中的模板),但我无法将tablator(即\t)作为列分隔符传递。如何执行此操作?数据流UI中存在一个错误,导致无法将转义字符传递给数据流模板
很高兴,情况不再如此。要将制表符指定为分隔符,只需传递\\t,模板将按预期工作
要传递任何其他参数,请注意,可以转义任何字符。(例如,\\n,\\t等)
我有一个从pub/sub到bigquery的数据流,它使用javascript UDF来操作数据。如果我在云存储中修改文件,正在运行的数据流是否会自动更新以开始使用这个新的UDF,是否有延迟,或者我必须手动触发它?我更改了UDF,但数据流的行为就好像它在使用旧的UDF运行一样
另外,调试这些在数据流上运行的UDF的最佳方法是什么
谢谢 你是指数据流模板,对吗
不幸的是,更改文件时UDF不会刷新。要使用新文件进行更新,您需要执行管道更新,或停止/重新启动管道
至于调试UDF,我不确定什么是最好的方
如果ProcessElement方法中的代码既修改了一个(或多个)状态变量,又输出了一些结果,那么我在Dataflow中对此操作的原子性有保证吗
让我们用一个代码示例来澄清我的问题(摘自):
@ProcessElement
公共无效处理元素(
ProcessContext上下文,
@StateId(“索引”)ValueState索引){
int current=firstNonNull(index.read(),0);
输出(千伏(当前,context.element());
索引写入(当前+1
我试图构建一个数据流管道来处理包含跨多行事件的文本文件。dataflow SDK TextIO类假定每一行都是一个新事件
我的计划是创建一个新的文本阅读器并向DataPipelineRunner注册。这个新读者将知道如何将多行聚合成一行
我很确定这种方法会奏效,但我想知道这是正确的方法还是有更简单的解决方案
我试图分析的文本是:
==============> len:45 pktype:4 mtype:2
SYMBOL: USOCSTIA151632.00
OPEN_INT: 212
P
是否有可能知道GCP上的数据流工作人员使用的外部IP范围?目标是在外部服务上设置某种类型的IP过滤,以便只有在GCP上运行的数据流作业才能访问该服务。最佳解决方案是升级,以便您可以使用SSL或其他强身份验证机制
您可以使用--network=选项来控制工作虚拟机分配到的GCE网络。请查看,以获取有关如何设置VPN的详细信息(如Elmar建议的评论)。您还可以考虑使用静态外部IP在网络中设置一台机器,并将其用作网络中其他VM的代理
这不是我们测试过的使用模式,因此可能存在通过代理/VPN的延迟或流
我使用的是谷歌云数据流,有一个ParDo函数,需要访问PCollection中的所有元素。为了实现这一点,我想将一个PCollection转换为一个PCollection,其中包含所有元素的单个Iterable。我想知道是否有一个更干净/更简单/更快的解决方案来解决我提出的问题
第一种方法是创建一个伪键,执行GroupByKey,然后获取值
PCollection<MyType> myData;
// AddDummyKey() outputs KV.of(1, context.el
使用Dataflow作业从bigQuery表读取数据时,尝试避免集合中的重复。对于使用beam.sdk.transforms.Distinct读取带有Distinct的记录的。但我犯了错误
java.lang.IllegalStateException: the keyCoder of a GroupByKey must be deterministic
at org.apache.beam.sdk.transforms.GroupByKey.expand(GroupByKey.java
cloud dataflow runner现在是否使用了选项numberOfWorkerHarnessThreads
先前的PipelineOptions属性numberOfWorkerHarnessThreads是在中指定的,并显示在数据流作业监视UI的“管道选项”下。现在两人都失踪了
如果不使用此选项,现在如何管理工作线程?此选项仍然存在。您可以在中找到它。我在问数据流是否真的使用了它。如果是,为什么UI和PipelineOptions Dataflow documentation.AFAI
我想每十分钟做一次定期作业(cron作业),从Postgresql加载数据生成序列用于实现它,下面是代码
PostgresOptions options=PipelineOptionsFactory.fromArgs(args).withValidation().as(PostgresOptions.class);
//创建管道
Pipeline=Pipeline.create(选项);
PGSimpleDataSource pgDataSource=getPostgresDataSource(
我们希望开发一个GCP数据流扩展,可以在Dataflow pipeline builder GUI中提供给我们的数据工程师。我想我在其中一个网络研讨会上理解了这一点,但找不到任何相关文档。一个范例项目也很好
非常感谢你的帮助
尤尔根你所描述的是,所以你的记忆是正确的。从这些公共文档中,有关于如何创建自定义模板的子链接 你所描述的是,所以你的记忆是正确的。从这些公共文档中,有关于如何创建自定义模板的子链接
我需要根据时间戳将scocollection元素保存到不同的BigQuery表中。我尝试了以下方法-
按(TableName,Iterable[TableRow])对元素进行分组,然后使用BigQueryClient实例将每个Iterable[TableRow]保存到各自的表中。这不起作用,因为BigQueryClient不可序列化
创建一个SCollection[TableName,PCollection[TableRow]],然后使用BigQueryIO将每个PCollection[Tabl
我试图更好地理解Beam/Dataflow的概念,所以假设我有以下流媒体管道:
管道
.apply(PubsubIO.readStrings().fromSubscription(“某些订阅”))
.适用(新DoFn()的第{
@过程元素
公共void processElement(ProcessContext c){
字符串消息=c.element();
debug(“获取消息:{}”,消息);
c、 输出(消息);
}
}));
无限源多久从订阅中提取一次消息?这是否可配置(可能基于win
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 30 页