我正在使用数据流模板来运行云数据流
我正在提供一些默认值和调用模板。数据流在数据流管道摘要中正确显示了管道选项。但它没有使用运行时值。
class Mypipeoptions(PipelineOptions):
@classmethod
def _add_argparse_args(cls, parser):
parser.add_value_provider_argument(
'--preprocess_indir',
help='GCS path of the data to be preprocessed',
required=False,
default='gs://default/dataset/'
)
parser.add_value_provider_argument(
'--output_dir_train',
help='GCS path of the preprocessed train data',
required=False,
default='gs://default/train/'
)
parser.add_value_provider_argument(
'--output_dir_test',
help='GCS path of the preprocessed test data',
required=False,
default='gs://default/test/'
)
parser.add_value_provider_argument(
'--output_dir_validate',
help='GCS path of the preprocessed validate data',
required=False,
default='gs://default/validate/'
)
然后我正在检查值是否可访问
p = beam.Pipeline(options=args)
if args.preprocess_indir.is_accessible():
input_dir = args.preprocess_indir
else:
input_dir = getValObj(args.preprocess_indir)
if args.output_dir_train.is_accessible():
output_train = args.output_dir_train
else:
output_train = getValObj(args.output_dir_train)
if args.output_dir_test.is_accessible():
output_test = args.output_dir_test
else:
output_test = getValObj(args.output_dir_test)
if args.output_dir_validate.is_accessible():
output_validate = args.output_dir_validate
else:
output_validate = getValObj(args.output_dir_validate)
现在,在调用模板时,我可以看到想要作为(Mypipeoptions)管道选项参数传递的值,但在实际运行中未使用,而是使用给定的默认选项
答案 0 :(得分:2)
我想我找到了解决方案,我是将运行时参数分配给变量,然后将其传递给输入或输出。
当我直接将运行时参数传递给源或接收器时,它就起作用了。像下面的那个
'Write train dataset to destination' >> beam.io.tfrecordio.WriteToTFRecord(
file_path_prefix=args.output_dir_train
)
我相信我错过的部分是,在创建模板时,它会构建图形,并且只能将运行时参数插入其运行时。构建图形时,其他计算已经完成。
如果我错了请纠正我