警告:apache_beam.options.pipeline_options:丢弃不可解析的参数

Posted

技术标签:

【中文标题】警告:apache_beam.options.pipeline_options:丢弃不可解析的参数【英文标题】:WARNING:apache_beam.options.pipeline_options:Discarding unparseable args 【发布时间】:2021-05-12 18:58:15 【问题描述】:

我目前有代码:

gs_folder = sys.argv[1]
options = PipelineOptions(
    runner='DataflowRunner',
    project='xxx',
    job_name=xxxuuid.uuid4()',
    region='us-central1',
    temp_location='xxx')

gfs = gcs.GCSFileSystem(options)
p = beam.Pipeline(options=options)

discover_empty = p | 'Filenames' >> beam.Create(gfs.match([gs_folder])[0].metadata_list) | \
            'Reshuffle' >> beam.Reshuffle() | \
            'Delete empty files' >> beam.ParDo(DeleteEmpty(gfs))
p.run()

此代码基于问题here。最终发生的是我在下面收到此错误:

WARNING:apache_beam.options.pipeline_options:Discarding unparseable args: ['gs://xx/xx']

这没有多大意义,因为这是我要执行删除操作的文件夹。此外,看起来数据流作业确实成功运行,但应该删除的文件没有正确删除。我应该如何在这里传递管道选项 arg?

我还有几个关于这个过程的后续问题。看起来beam.Create() 在本地运行,然后切换到数据流。我怎样才能使管道的这一部分在数据流上运行?

【问题讨论】:

【参考方案1】:

确保您将标志传递为 --input=gs//... 该错误看起来您的命令行调用无效,并且 gs 路径被解释为整个参数。

beam.Create 作为管道的一部分运行,但传递给它的参数是在本地计算的。要在管道中计算它,请使用 beam.Create(None) ,然后使用运行匹配逻辑的 DoFn。

【讨论】:

您能否详细说明我将如何将标志编码到输入中。 尝试按照此处所述定义您的选项:beam.apache.org/releases/pydoc/2.27.0/…【参考方案2】:

你可以作为命令行参数传递

--db_port 5432 --db_pass XXXX

import argparse

# initializing Pipeline object - parse CL args
parser = argparse.ArgumentParser()
parser.add_argument('--db_pass')
parser.add_argument('--db_port')
parser.add_argument('--db_host')
args, beam_args = parser.parse_known_args()

# initializing Pipeline object
options = PipelineOptions(beam_args)
options.view_as(StandardOptions).streaming = True
p = beam.Pipeline(options=options)

args.db_pass // your value

【讨论】:

以上是关于警告:apache_beam.options.pipeline_options:丢弃不可解析的参数的主要内容,如果未能解决你的问题,请参考以下文章

怎么忽略KEIL的警告

IOS警告消除

Quick.db unwarn 命令取消警告成员中的所有警告

java程序中很多警告,如何修改掉?

将特定级别的所有警告视为错误,而不是下一级的警告

keil警告怎么办?