我在我的Apache光束脚本中遇到了一个问题。目前,它仍然是一个草案,我正在DirectRunner上运行它。但我一直收到一个错误,这对我来说毫无意义。这是我的脚本的一个缩写版本:
options = PipelineOptions()
p = TestPipeline(options = options)
bill_info = (p
| 'Create Pcollection' >> beam.Create('a')
| 'Reformatting' >> beam.ParDo(ReformatAttributesFn())
| 'Scrub First Name' >> beam.ParDo(ScrubFnameFn())
| 'Scrub Last Name' >> beam.ParDo(ScrubLnameFn())
| 'Fix Nickname' >> beam.Map(add_nickname, n_tbl=beam.pvalue.AsList(nickname_tbl_ex), return_n=False)
| 'Check Sponsor' >> beam.Map(check_pol, p_tbl=beam.pvalue.AsList(pol_tbl_ex))
| 'Check Bill' >> beam.Map(check_bill, b_tbl=beam.pvalue.AsList(bill_tbl_ex))
| 'Final Formatting' >> beam.ParDo(FinalFormatFn())
| 'Write To Text' >> beam.io.WriteToText('C:/Users/cmatt/Downloads/test_bill_votes',
file_name_suffix='.csv'))
p.run()
我在p.run()函数上收到的错误是"TypeError: object()不带参数“。但即使使用最基本的管道,例如:
options = PipelineOptions()
p = TestPipeline(options = options)
bill_info = (p
| 'Create Pcollection' >> beam.Create('a'))
p.run()
我仍然得到相同的错误返回。现在,管道对象不应该接受任何输入;它只是一个通过管道运行所有PCollections的方法。但是我的脚本的哪一部分会导致这个错误呢?是不是我的虚拟环境中的一些模块没有正确排列?还是有一个我看不到的单独问题?
感谢大家的帮助!
发布于 2018-12-28 23:49:00
您的python脚本执行没有足够的上下文。你也收到了基本数据流指令的相同错误,这让我认为你的脚本有一个与python本身相关的错误,例如'mixed tabs and spaces',你有这样的东西吗?
我只是从python命令行做了一个快速测试,它工作了(步骤取自Quickstart Using Python):
>>> import apache_beam as beam
>>> from apache_beam.pipeline import PipelineOptions
>>> options = PipelineOptions()
>>> p = beam.Pipeline(options=options)
>>> bill_info = (p | 'Create Pcollection' >> beam.Create(['a','b']))
>>> p.run()
<apache_beam.runners.portability.fn_api_runner.RunnerResult object at 0x7fb57856d290>
>>>
如果上面的信息没有帮助,你能分享你正在执行的整个基本脚本以及如何设置你的虚拟环境吗?这将有助于复制。
https://stackoverflow.com/questions/53064386
复制