Проблема Apache Beam с функцией p.run ()

Я столкнулся с проблемой в одном из моих скриптов Apache Beam. На данный момент это все еще черновик, и я использую его на 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()

Я получаю сообщение об ошибке «TypeError: object () не принимает параметров» в функции p.run (). Но даже с самым простым конвейером, таким как этот:

options = PipelineOptions()
p = TestPipeline(options = options)
bill_info = (p
             | 'Create Pcollection' >> beam.Create('a'))
p.run()

Я по-прежнему получаю ту же ошибку. Теперь объект конвейера не должен принимать никаких входных данных; это просто способ запустить все PCollections через конвейер. Но какая часть моего скрипта вызывает ошибку? Может быть, некоторые модули в моей виртуальной среде неправильно выстраиваются в линию? Или есть отдельная проблема, которую я не вижу?

Спасибо всем за помощь!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
626
1

Ответы 1

Недостаточно контекста для выполнения вашего скрипта python. Тот факт, что вы также получаете ту же ошибку с базовой инструкцией Dataflow, заставляет меня думать, что в вашем скрипте есть ошибка, связанная с самим python, например «смешанные табуляции и пробелы», у вас есть что-то подобное?

Я просто провожу быстрый тест из командной строки python, и он сработал (шаги, взятые из Быстрый старт с использованием 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>
>>>

Если приведенная выше информация не помогает, не могли бы вы поделиться всем базовым скриптом, который вы выполняете, и тем, как вы настраиваете свою виртуальную среду? Поможет воспроизвести.

Мне удалось решить проблему. Это определенно имело какое-то отношение к тому, как загружались пакеты, и был некоторый конфликт в номенклатуре. Я открыл чистую виртуальную среду в PyCharm, и управление пакетами стало намного чище. Тогда все работало. Цените помощь!

Cam Mattheson 10.01.2019 14:29

Другие вопросы по теме