如何在DataflowStartFlexTemplateOperator中指定输出文件名前缀
Dataflow BigQuery转Parquet模板文件名前缀配置方法
谷歌官方提供的BigQuery_to_Parquet Flex模板自带输出文件名前缀配置参数,你只需要在算子的parameters字段中新增outputFilenamePrefix配置项即可实现自定义前缀。
默认规则为:配置后输出的完整文件名格式为 {prefix值}-{分片序号}-of-{总分片数}.parquet,不配置时默认前缀为output。
修改后的代码如下:
export_to_gcs = DataflowStartFlexTemplateOperator( task_id=f'export_to_gcs_day_{day_num}', project_id=PROJECT_ID, body={ 'launchParameter': { 'containerSpecGcsPath': 'gs://dataflow-templates-us-central1/latest/flex/BigQuery_to_Parquet', 'jobName': f'tivo-export-to-gcs-{run_date}', 'environment': { 'stagingLocation': f'gs://{GCS_BUCKET_NAME}/{STAGING_LOCATION}', 'numWorkers': '1', 'maxWorkers': '20', 'workerRegion': 'us-central1', 'serviceAccountEmail': DF_SA_NAME, 'machineType': 'n1-standard-4', 'ipConfiguration': 'WORKER_IP_PRIVATE', 'tempLocation': f'gs://{GCS_BUCKET_NAME}/{TEMP_LOCATION}', 'subnetwork': SUBNETWORK, 'enableStreamingEngine': False }, 'parameters': { 'tableRef': f'{PROJECT_ID}:{DATASET_NAME}.native_firehose_table', 'bucket': f'gs://{GCS_BUCKET_NAME}/Tivo/site_activity/{run_date}/', 'numShards': '25', # 新增此行配置文件名前缀,可根据需求自定义值 'outputFilenamePrefix': f'tivo-site-activity-{run_date}' }, } }, location=REGION_NAME, wait_until_finished=True, dag=dag )
补充说明:
- 前缀值可以包含特殊字符、日期变量,只要符合GCS对象命名规范即可
- 不需要手动添加
.parquet后缀,模板会自动在最终文件名中补全 - 如果需要进一步修改完整的命名规则,才需要自定义Flex模板,仅改前缀用原生参数即可满足需求
内容的提问来源于stack exchange,提问作者GURUDAS K S
相关产品推荐
相关产品推荐

