AWS MWAA:胶水爬虫问题

时间:2021-04-06 13:49:24

标签: amazon-web-services airflow aws-glue mwaa

我已经手动配置了一个 Glue Crawler,现在正尝试通过 Airflow(在 AWS 中)运行它。

根据 here 的文档,与 Glue 环境中的其他任务相比,似乎有很多方法可以处理此目标。但是,我在处理这个看似简单的场景时遇到了问题。

以下代码定义了 Glue[Crawler]+Airflow 的基本设置。假设在它之前和之后定义了一些其他的工作任务,这里不包括。

run_crawler = AwsGlueCrawlerHook()
run_crawler.start_crawler(crawler_name="foo-crawler")

现在,这是一个示例流程:

json2parquet >> run_crawler >> parquet2redshift

鉴于所有这些,Airflow Webserver UI 上会出现以下错误:

Broken DAG: An error occurred (CrawlerRunningException) when calling the StartCrawler operation: Crawler with name housing-raw-crawler-crawler-b3be889 has already started

我明白了:为什么您不使用除 start_crawler 方法以外的其他方法...?说得好,但我不知道还能用什么。我只想在一些上游任务成功完成后启动爬虫,但无法启动。

我该如何解决这个问题

1 个答案:

答案 0 :(得分:0)

这个问题的出现是因为我缺乏 Airflow 知识。使用 PythonOperator 并将上述功能封装在该对象中解决了这个问题。例如,一个可行的方法看起来像这样:

def glue_crawler_parquet2redshift():
    run_crawler = AwsGlueCrawlerHook()
    return run_crawler.start_crawler(crawler_name="housingGlueCrawlerParquetRaw")

glue_crawler_parquet2redshift_task = PythonOperator(
    task_id='ingestHousingRawParquet',
    python_callable=glue_crawler_parquet2redshift,
    dag=housing_dag,
    )