私は新しいパラメータ名変更Pythonのメソッドのパラメータ名、プログラム
どのように修正することができるとの新しいメソッドを作成しない方法
の実際の署名を変更するために見ているわけではありませんメソッドのシグネチャ内のパラメータの名前?
カスタム内部フレームワーク上でSpark Streamingジョブ用の抽象クラスを作成しています。このクラスでは、パラメータ名の1つがKafkaトピックの名前と一致する必要があります。そうでない場合は、オプションのフラグとして引数が取り込まれます。ここで
は、問題のメソッドです:
def apply(self, sc, records):
if not self.FILTER_FIELDS:
raise Exception('SalesForceTransformStage requires FILTER_FIELDS:[_label_,[_values_]]')
return shipping_label \
.filter(lambda rec: rec[self.FILTER_FIELDS[0]] in self.FILTER_FIELDS[1]) \
.filter(self.filters) \
.map(lambda rdd: format_record_keys_for_salesforce(rdd,
self.SALESFORCE_FIELD_MAP,
self.SALESFORCE_FIELD_LIMITS,
self.INPUTS[self.INPUTS.keys()[0]])) \
.map(self.mappers) \
.map(self.OUTPUT.project_row)
は今のところ、パラメータrecords
は、オプションフラグとして取り上げられているので、私は、スクリプトを実行すると、これが起こる:
usage: new_shipping_label_event.py [-h] [--force-rebuild] --records RECORDS
[--save-to SAVE_TO]
new_shipping_label_event.py: error: argument --records is required
をただし、引数名をshipping_label
(カフカトピックの名前)に変更すると、スクリプトは正常に実行されます。パラメータの名前をプログラムで設定するにはどうすればよいですか?
私はフィルタリングが読めるように9の上にまたがる必要があり、単一の「行」にならないように、あなたが前もってそれら 'lambda's(おそらくプライベートメソッド)を定義するお勧めすることができます。 –
いいえ、それはなぜそれをもっと読みやすくしますか? –
それは実際の関数ですか?私は実際のものがより複雑で、いくつかのフィルタリングが内部に埋め込まれていると仮定していましたが、それが全体の方法であれば、それは気にしません。 –