通过Airflow的SparkSubmitOperator
和SparkSubmitHook
正确设置Spark主控器比预期更具挑战性。
您似乎必须为local
设置正确的连接,否则默认为纱线。
我在我的shell中设置了export AIRFLOW_CONN_SPARK_LOCAL=local[2]
,但最终的spark-submit命令仍然是空白的:--master
。我在这里重新创作:
>>> CONN_ENV_PREFIX = 'AIRFLOW_CONN_'
>>> import os
>>> conn_id = 'spark_local'
>>> os.environ.get(CONN_ENV_PREFIX + conn_id.upper())
'local[2]'
>>> from airflow.models import Connection
>>> Connection(conn_id=conn_id, uri='local[2]')
spark_local
>>> Connection(conn_id=conn_id, uri='local[2]').host
''
>>> Connection(conn_id=conn_id, uri='local').host
''
>>> Connection(conn_id=conn_id, uri='spark://local').host
'local'
>>> Connection(conn_id=conn_id, uri='spark://local[2]').host
'2'
似乎将网址设置为spark://local
部分有效,但此处缺少Airflow文档,而且我不确定如何设置本地核心的数量。有什么想法吗?