Apache spark SparkSubmitor操作器升高“;找不到dag“id”;运行时出错

Apache spark SparkSubmitor操作器升高“;找不到dag“id”;运行时出错,apache-spark,airflow,Apache Spark,Airflow,因此,我有一个Spark工作,从AWS中提取一些域,然后三个不同的工作,每个工作都提取所述域,并从站点提取各种数据。由于某些原因,此工作流在ImportS3CrawlData处暂停,并出现以下错误: [2018-03-22 13:37:02,762] {models.py:1428} INFO - Executing <Task(SparkSubmitOperator): ImportCrawlJob> on 2018-03-22 13:37:00 [2018-03-22 13:37

因此,我有一个Spark工作,从AWS中提取一些域,然后三个不同的工作,每个工作都提取所述域,并从站点提取各种数据。由于某些原因,此工作流在ImportS3CrawlData处暂停,并出现以下错误:

[2018-03-22 13:37:02,762] {models.py:1428} INFO - Executing <Task(SparkSubmitOperator): ImportCrawlJob> on 2018-03-22 13:37:00
[2018-03-22 13:37:02,763] {base_task_runner.py:115} INFO - Running: ['bash', '-c', 'sudo -H -u hdfs airflow run dag_extract_jobs ImportCrawlJob 2018-03-22T13:37:00 --job_id 21 --raw -sd DAGS_FOLDER/run_extract_jobs.py --cfg_path /tmp/tmpir3e3r32']
[2018-03-22 13:37:04,194] {base_task_runner.py:98} INFO - Subtask: [2018-03-22 13:37:04,193] {__init__.py:45} INFO - Using executor SequentialExecutor
[2018-03-22 13:37:04,356] {base_task_runner.py:98} INFO - Subtask: [2018-03-22 13:37:04,356] {models.py:189} INFO - Filling up the DagBag from /home/airflow/airflow/dags/run_extract_jobs.py
[2018-03-22 13:37:04,451] {base_task_runner.py:98} INFO - Subtask: Traceback (most recent call last):
[2018-03-22 13:37:04,451] {base_task_runner.py:98} INFO - Subtask:   File "/usr/bin/airflow", line 27, in <module>
[2018-03-22 13:37:04,451] {base_task_runner.py:98} INFO - Subtask:     args.func(args)
[2018-03-22 13:37:04,452] {base_task_runner.py:98} INFO - Subtask:   File "/usr/lib/python3.5/site-packages/airflow/bin/cli.py", line 353, in run
[2018-03-22 13:37:04,452] {base_task_runner.py:98} INFO - Subtask:     dag = get_dag(args)
[2018-03-22 13:37:04,452] {base_task_runner.py:98} INFO - Subtask:   File "/usr/lib/python3.5/site-packages/airflow/bin/cli.py", line 130, in get_dag
[2018-03-22 13:37:04,452] {base_task_runner.py:98} INFO - Subtask:     'parse.'.format(args.dag_id))
[2018-03-22 13:37:04,452] {base_task_runner.py:98} INFO - Subtask: airflow.exceptions.AirflowException: dag_id could not be found: dag_extract_jobs. Either the dag did not exist or it failed to parse.
我已经确保气流和火花都是最新的。我的dag文件夹设置正确。气流可以很好地运行教程文件


这件事我已经搞了好几天了,我完全不知所措。提前感谢您的帮助。

您似乎没有正确设置配置参数

确保完成本课程的第一部分


另外,在
afflow.cfg
中,确保已将
dags_文件夹
设置为文件路径。进行此操作时,您还可以检查是否需要设置其他设置和其他路径。

在我看来,DAG本身存在问题。您能用
气流列表\u DAG
列出DAG而不出问题吗?如果可以,那么气流列表任务呢?是的,这两个命令都可以正常工作。这就是为什么我感到困惑的原因。它与
DAGS\u文件夹
有关吗?这是你写的还是一个未设置的变量?如果您自己在shell中完全执行sudo-H-u hdfs气流运行dag_extract_jobs ImportCrawlJob 2018-03-22T13:37:00--job_id 21--raw-sd DAGS_FOLDER/run_extract_jobs.py--cfg_path/tmp/tmpir3e3r32,会发生什么情况?cfg无法使用--_path/tmp/tmpir3e32,没有这样的文件或目录。我完全删除了这个变量,得到了“dag_id not found”错误。然后,我将“/tmp/tmpir3e3r32”替换为我的配置文件名“afflow.cfg”,并从None json.decoder.jsondecoderError中得到以下错误消息:
文件“/usr/lib64/python3.5/json/decoder.py”,第357行,在raw_decode raise jsondecoderError(“期望值”,s,err.value)中
我不明白您为什么用文件名交换配置路径。这一切似乎都指向缺少配置。
# Parameters to initialize Spark:
access_id = Variable.get("AWS_ACCESS_KEY")
bucket_name = 'cb-scrapinghub'
secret_key = Variable.get("AWS_SECRET_KEY")
timestamp = datetime.now().strftime("%Y-%m-%d-%H:%M:%S")


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

DAG = DAG(
    dag_id='dag_extract_jobs',
    description='Run Extract Jobs',
    schedule_interval='@once',
    start_date=datetime(2018, 1, 1),
    catchup=False,
    default_args=default_args,
)

# Spark Job that runs ImportS3CrawlData:
importCrawlJob = SparkSubmitOperator(
    task_id='ImportCrawlJob',
    ...
    run_as_user='hdfs',
    dag=DAG,
)

# Spark Job that runs ExtractAboutText:
extractAboutText = SparkSubmitOperator(
    task_id='ExtractAboutText',
    ...
    run_as_user='hdfs',
    dag=DAG
)
extractAboutText.set_upstream(importCrawlJob)

# Spark Job that runs ExtractCompanyInfo:
extractCompanyInfo = SparkSubmitOperator(
    task_id='ExtractCompanyInfo',
    ...
    run_as_user='hdfs',
    dag=DAG
)
extractCompanyInfo.set_upstream(importCrawlJob)

# Spark Job that runs ExtractWebPeople:
extractWebPeople = SparkSubmitOperator(
    task_id='ExtractWebPeople',
    ...
    run_as_user='hdfs',
    dag=DAG
)
extractWebPeople.set_upstream(importCrawlJob)