Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据流:无工作程序活动_Python_Google Cloud Platform_Google Cloud Dataflow_Apache Beam - Fatal编程技术网

Python 数据流:无工作程序活动

Python 数据流:无工作程序活动,python,google-cloud-platform,google-cloud-dataflow,apache-beam,Python,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,我在从AI平台笔记本运行相对普通的数据流作业时遇到了一些问题(该作业旨在从BigQuery>清理和准备>写入GCS中的CSV中获取数据): options={'staging_location':'/staging/location/, “临时位置”:“/temp/location/”, “作业名称”:“数据流管道作业”, "项目":项目,, “拆卸政策”:“始终拆卸”, “最大工人数”:3, "地区":地区,, “子网络”:“区域//子网络/”, 'no_save_main_session':

我在从AI平台笔记本运行相对普通的数据流作业时遇到了一些问题(该作业旨在从BigQuery>清理和准备>写入GCS中的CSV中获取数据):

options={'staging_location':'/staging/location/,
“临时位置”:“/temp/location/”,
“作业名称”:“数据流管道作业”,
"项目":项目,,
“拆卸政策”:“始终拆卸”,
“最大工人数”:3,
"地区":地区,,
“子网络”:“区域//子网络/”,
'no_save_main_session':True}
opts=beam.pipeline.PipelineOptions(标志=[],**选项)
p=beam.Pipeline('DataflowRunner',options=opts)
(p
|'read'>>beam.io.read(beam.io.BigQuerySource(query=selquery,use\u standard\u sql=True))
|“csv”>>波束平面图(至csv)
|'out'>>beam.io.Write(beam.io.WriteToText('OUTPUT\u DIR/out.csv'))
p、 运行()
stackdriver返回的错误:

工作流失败。原因:数据流作业似乎被卡住,因为在过去1小时内未看到任何工作人员活动。您可以在获得有关云数据流的帮助

以下警告:

S01:eval_out/WriteToText/Write/WriteImpl/DoOnce/Read+out/WriteToText/Write/WriteImpl/InitializeWrite失败

不幸的是,除此之外没有其他什么。其他需要注意的事项:

  • 作业在本地运行,没有任何错误
  • 网络在自定义模式下运行,但为默认网络
  • Python版本==3.5.6
  • Python Apache Beam版本==2.16.0
  • AI平台笔记本实际上是一个GCE实例,上面部署了一个深度学习VM映像(使用容器优化的操作系统),然后我们使用端口转发来访问Jupyter环境
  • 请求作业的服务帐户(计算引擎默认服务帐户)具有完成此操作所需的权限
  • 笔记本电脑实例、数据流作业、地面军事系统存储桶都在欧洲西部1
  • 我也试着在标准的AI平台笔记本上运行这个程序 还是一样的问题
任何帮助都将不胜感激!请让我知道,如果有任何其他信息,我可以提供这将有帮助


我意识到我的错误与以下相同:


我的工作陷入困境的原因是,写入gcs步骤将首先运行,即使它本应最后运行。关于如何解决这个问题有什么想法吗?

在检查代码时,我注意到使用的“WriteToText转换”的语法与Apache beam文档中建议的语法不匹配

请遵循中概述的“WriteToText”参数语法

建议的解决方案是考虑使用BQ到批处理模式下可用的CSV文件导出选项。


还有更多的导出选项可用。完整列表可在“数据格式和压缩类型”文档中找到。

是否可以从笔记本中捕获命令行输出命令?或者您可以在命令行上运行它并捕获输出?这将打印出一个指向dataflow UI的链接,您可以在其中进行进一步调试。您还可以手动导航到dataflow UI,并找到最近运行的作业以访问同一页面。请查看这些说明,看看是否可以从Dataflow UI的Stackdriver日志中识别任何内容。您是通过
--需求文件
--额外的包
还是
--设置文件
?另外,请注意,某些步骤可能不需要任何工人,并且它们被标记为在管道运行的所有时间都在运行
WriteToText
就是其中之一。因此,即使您的工作人员尚未启动,
WriteToText
仍将处于«运行»状态。
options = {'staging_location': '/staging/location/',
           'temp_location': '/temp/location/',
           'job_name': 'dataflow_pipeline_job',
           'project': PROJECT,
           'teardown_policy': 'TEARDOWN_ALWAYS',
           'max_num_workers': 3,
           'region': REGION,
           'subnetwork': 'regions/<REGION>/subnetworks/<SUBNETWORK>',
           'no_save_main_session': True}
opts = beam.pipeline.PipelineOptions(flags=[], **options)  
p = beam.Pipeline('DataflowRunner', options=opts)
(p 
 | 'read' >> beam.io.Read(beam.io.BigQuerySource(query=selquery, use_standard_sql=True))
 | 'csv' >> beam.FlatMap(to_csv)
 | 'out' >> beam.io.Write(beam.io.WriteToText('OUTPUT_DIR/out.csv')))
p.run()