HOWTO · Java

ポート番号を送信する前に Java ゲートウェイ プロセスが終了しました

このチュートリアルでは、Java でポート番号エラーをドライバーに送信する前に、Java ゲートウェイ プロセスが終了したことを示します。

このチュートリアルでは、Java での ドライバーにポート番号を送信する前に Java ゲートウェイ プロセスが終了しました エラーについて説明します。

ドライバにポート番号を送信する前に Java ゲートウェイ プロセスが終了した

PySparkは、Python API を使用してSparkアプリケーションを作成するために使用され、分散環境でデータをインタラクティブに分析するためのシェルを提供します。

PySpark Shellspark-submit、または spyderPySpark アプリケーションを実行しているときに、エラー Pyspark: Exception: Java gateway process exited before sent the driver its port number が発生する可能性があります。

Windows、Mac、または Linux で PySpark を実行したい場合、PySpark は通常 Python フレームワークとして機能すると考えられているため、マシンに Java をインストールする必要があります。 このエラーが発生する理由は、JAVA_HOME または PYSPARK_SUBMIT_ARGS を設定していないことです。

Pyspark: 例外: Java ゲートウェイ プロセスは、ドライバーにそのポート番号を送信する前に終了しました エラーを解決するためのソリューションを次に示します。

Open JDK または Oracle JDK をインストールする

PySpark を実行するためになぜ Java が必要なのか疑問に思うに違いありません。 Spark は基本的に Scala で書かれていますが、後に業界がその API を採用したため、Py4J を使用した Python 用の PySpark がリリースされました。Py4J は Java ライブラリであるため、Java PySpark を実行するために必要です。

Py4JPySpark に統合されており、Python が JVM オブジェクトとやり取りできるようになっています。

次のコマンドを使用して、OpenJDK をインストールできます。

# Installing Open JDK
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-11-jdk

# Installing Oracle JDK
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

JDK をインストールしたら、JAVA_HOME パスを設定し、以下の手順に従う必要があります。

  • JDK パスを見つけます。 Java がインストールされている場合、パスは /usr/lib/jvm/java-1.x.x-openjdk になります。
  • 次のコマンドを実行して JAVA_HOME パスを設定します。
    export JAVA_HOME=/usr/lib/jvm/java-1.x.x-openjdk
    
  • このコマンドは、JAVA_HOME パスを設定して echo $JAVA_HOME の実行を確認し、Java インストール パスを表示します。

上記のコマンドは、Windows の Linux 環境用です。 インストーラーは次の場所からダウンロードできます。

  1. OpenJDK
  2. オラクル

Windows で JAVA_HOME を設定するには、次の手順に従います。

  • Windows の検索バーで環境変数を検索します。
  • システム環境変数の編集 を開きます。
  • 環境変数ボタンをクリックして、環境変数を開きます。
  • システム変数で、New をクリックします。
  • 名前は JAVA_HOME になります。
  • 値はインストール パスになります (例: C:\Program Files\Java\jdk-17.0.2)。
  • 名前と値を入力したら、OK変更を適用をクリックします。

PYSPARK_SUBMIT_ARGS を設定

ほとんどの場合、エラー Pyspark: 例外: Java ゲートウェイ プロセスは、ドライバーにそのポート番号を送信する前に終了しました は、PYSPARK_SUBMIT_ARGS が設定されていない場合に発生します。 次のコマンドを使用して、PYSPARK_SUBMIT_ARGS を設定します。

export PYSPARK_SUBMIT_ARGS="--master local[3] pyspark-shell"

上記のコマンドは、master を使用して PYSPARK_SUBMIT_ARGS を設定します。 両方のソリューションに従うと、問題が解決します。