【问题标题】:Pyspark cluster mode exception - Java gateway process exited before sending the driver its port numberPyspark 集群模式异常 - Java 网关进程在向驱动程序发送其端口号之前退出
【发布时间】:2020-08-03 07:24:55
【问题描述】:

在 apache 气流中,我编写了一个 PythonOperator,它使用 pyspark 在纱线集群模式下运行作业。我初始化 sparksession 对象如下。

    spark = SparkSession \
    .builder \
    .appName("test python operator") \
    .master("yarn") \
    .config("spark.submit.deployMode","cluster") \
    .getOrCreate()

但是,当我运行我的 dag 时,我得到了一个异常。

    Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/airflow/models/taskinstance.py", line 983, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/usr/local/lib/python3.8/dist-packages/airflow/operators/python_operator.py", line 113, in execute
    return_value = self.execute_callable()
  File "/usr/local/lib/python3.8/dist-packages/airflow/operators/python_operator.py", line 118, in execute_callable
    return self.python_callable(*self.op_args, **self.op_kwargs)
  File "/catfish/dags/dags_dag_test_python_operator.py", line 39, in print_count
    spark = SparkSession \
  File "/usr/local/lib/python3.8/dist-packages/pyspark/sql/session.py", line 186, in getOrCreate
    sc = SparkContext.getOrCreate(sparkConf)
  File "/usr/local/lib/python3.8/dist-packages/pyspark/context.py", line 371, in getOrCreate
    SparkContext(conf=conf or SparkConf())
  File "/usr/local/lib/python3.8/dist-packages/pyspark/context.py", line 128, in __init__
    SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
  File "/usr/local/lib/python3.8/dist-packages/pyspark/context.py", line 320, in _ensure_initialized
    SparkContext._gateway = gateway or launch_gateway(conf)
  File "/usr/local/lib/python3.8/dist-packages/pyspark/java_gateway.py", line 105, in launch_gateway
    raise Exception("Java gateway process exited before sending its port number")
Exception: Java gateway process exited before sending its port number

我也设置了 PYSPARK_SUBMIT_ARGS,但它对我不起作用!

【问题讨论】:

    标签: pyspark airflow hadoop-yarn


    【解决方案1】:

    你需要在你的 ubuntu 容器上安装 spark。

    RUN apt-get -y install default-jdk scala git curl wget
    RUN wget --no-verbose https://downloads.apache.org/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz
    RUN tar xvf spark-2.4.6-bin-hadoop2.7.tgz
    RUN mv spark-2.4.6-bin-hadoop2.7 /opt/spark
    ENV SPARK_HOME=/opt/spark
    

    不幸的是,您无法使用 PythonOperator 在纱线上运行 spark。我建议你使用SparkSubmitOperatorBashOperator

    【讨论】:

    • 我使用 SparkSubmitOperator 问题解决了!
    • 太棒了! Pyspark 对此有奇怪的问题!
    • 正如你所说,PythonOperator 在运行 spark 纱线集群模式时存在一些问题。
    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 2019-06-08
    • 2017-07-15
    • 2018-09-12
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多