我正在AWS上运行一个测试作业。我正在从S3存储桶中读取CSV数据,在上面运行GLUE ETL作业,并将相同的数据存储在Amazon Redshift上。GLUE作业只是从S3中读取数据并存储在Redshift中,而不做任何修改。作业运行良好,我在Redshift中得到了想要的结果,但它返回了一个我无法理解的错误。
以下是错误日志:
18/11/14 09:17:31 WARN YarnClient: The GET request failed for the URL http://169.254.76.1:8088/ws/v1/cluster/apps/application_154218
当脚本在Glue作业内部运行时,我需要在Glue-ETL作业中做一些设置,而不是我的木星笔记本。
让我们假设我的设置是这样的:
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
SC = SparkContext.getOrCreate()
GC = GlueContext(SC)
# I only want to run this when inside a Glue Job
args =
在我的团队中,我们通过Step函数管理ETL作业。作为应用程序需求,我们不想使用Glue工作流。
我们的大多数ETL作业(即step函数)都属于以下类型:
Run Crawler on Data Source -> Execute Glue Job -> Run Crawler on Data Target
现在,我知道我可以为AWS作业()运行,但不能在Glue Crawler上运行。我的问题是:如何使等待成为一个步骤函数,直到Crawler完成?
我想出了两种解决方案:
一个专用的Lambda定期检查Crawler状态。这是非常低效的。
Step函数等待关于Crawl