amazon-web-services - AWS MWAA:胶水爬虫问题
问题描述
我已经手动配置了一个 Glue Crawler,现在正尝试通过 Airflow(在 AWS 中)运行它。
根据此处的文档,与 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
方法以外的东西......?公平点,但我不知道还能用什么。我只想在一些上游任务成功完成但无法启动爬虫。
我应该如何解决这个问题?
解决方案
这个问题是因为我缺乏气流知识而出现的。在该对象中使用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,
)
推荐阅读
- mysql - MySQL 如何使用 SELECT UNION ALL 和其他参数插入表中?
- python - 在 Django 的 MultipleChoiceField 中动态添加选项
- javascript - Palindrome:寻找最短的字符串
- javascript - React Native FlatList - 多次重新渲染/安装子项目
- php - 最好使用什么?FPDF VS TCPDF
- python - 通过 HTTP POST 传递二进制文件
- java - getLastSignInTimestamp() 和 getCreationTimestamp() 无法正常工作
- performance - Azure 存储帐户超过 IOPS 限制
- git - 保持 git 历史记录干净,同时保留更改日志以供代码审查
- ios - 无法设置 UIViewController 导航栏的颜色