Подключиться к экземпляру Google Cloud SQL из GCP Dataflow (ml метаданные)? - PullRequest
1 голос
/ 14 июля 2020

Я пытаюсь запустить очень простой пример конвейера с расширенным тензорным потоком и с метаданными ML.

        metadata_connection_config=metadata.mysql_metadata_connection_config(
        host="10.124.128.3", database="ml_metadata", port=3306, username='root', password='****')

Но конвейер не работает. Конвейер луча проходит в области us-central1 (без параметров сети или подсети). Облако SQL находится в том же регионе. Я также пробовал авторизацию через частный IP. Я получаю эту ошибку:

RuntimeError: Failed to establish connection to Metadata storage with error: mysql_real_connect failed: errno: 2002, error: Can't connect to MySQL server on '10.124.128.3' (36) [while running 'Run[CsvExampleGen]']

И я не знаю, что еще попробовать. Я не могу использовать SSL-сертификаты, это единственное, что поддерживает Cloud SQL:

https://www.tensorflow.org/tfx/api_docs/python/tfx/orchestration/metadata

Конвейер работает со следующим:

DATAFLOW_BEAM_PIPELINE_ARGS = [
'--project=' + 'ml-experiments-z',
'--runner=DataflowRunner',
'--temp_location=' + 'gs://taxi_dataset/tmp',
'--staging_location=' + 'gs://taxi_dataset/staging',
'--region=' + 'us-central1',
'--maxNumWorkers=' + '1',
'--experiments=shuffle_mode=service',
'--job-name=' + 'schemagen',
]

def create_pipeline():
    no_eval_config = example_gen_pb2.Input(splits=[
        example_gen_pb2.Input.Split(name='train', pattern='taxi_pipeline.csv'),
    ])
    example_gen = CsvExampleGen(input=external_input(
        'gs://taxi_dataset/'), input_config=no_eval_config)
    statistics_gen = StatisticsGen(examples=example_gen.outputs['examples'])
    schema_gen = SchemaGen(statistics=statistics_gen.outputs['statistics'])

    return pipeline.Pipeline(
        pipeline_name='ml-experiments-taxi-schema-gen',
        pipeline_root='gs://taxi_dataset',
        components=[example_gen, statistics_gen, schema_gen],
        beam_pipeline_args=DATAFLOW_BEAM_PIPELINE_ARGS,
        metadata_connection_config=metadata.mysql_metadata_connection_config(
            host="10.124.128.3", database="ml_metadata", port=3306, username='root', password='<removed for security>')
    )


if __name__ == '__main__':
    BeamDagRunner().run(create_pipeline()) # from tfx.orchestration.beam.beam_dag_runner import BeamDagRunner

Компонент метаданных ml является необязательным, и конвейер может успешно работать без него.

...