สอบถาม Apache Airflow error เนื่องจาก Java gateway ครับ

สวัสดีครับ ผมกำลังทำโปรเจคส่วนตัวโดยการใช้ airflow ผ่าน docker ครับ
โดย job etl process ผมมีการใช้ pyspark ในการ process ข้อมูล แต่พอรัน job airflow แล้วเกิด error ตามนี้ครับ

Failed to execute job 339 for task process ([JAVA_GATEWAY_EXITED] Java gateway process exited before sending its port number.; 438)

ผมลองไปเซิชหาข้อมูลเบื้องต้น เค้าบอกให้ install Java JDK ใน airflow container ไม่แน่ใจว่าเกี่ยวมั้ย
รบกวนแนะนำวิธีทำหรือวิธีที่แก้ไขที่ถูกต้องหน่อยครับ พอดีผมค่อนข้างใหม่กับสาย DE ครับ

ขอบคุณมากๆครับ

สวัสดีครับ ตอนนี้รัน Airflow ประมาณไหนอยู่ครับผม ใช้ Docker หรือเปล่า ถ้าใช้ ผมขอลองดู Dockerfile หน่อยได้ไหมครับ เดี๋ยวลองช่วยดู

เดาเบื้องต้นว่าตัวแปร PATH อะไรประมาณนี้อาจจะยังเซตไม่ตรงครับ

สวัสดีครับ ตอนนี้รัน Airflow ผ่าน Docker ครับ

ด้านล่างนี้เป็น Docker file สำหรับ install JDK และ packages ครับ

FROM apache/airflow:2.8.3
USER root

RUN apt-get update &&
apt-get install -y openjdk-17-jdk &&
apt-get clean &&
rm -rf /var/lib/apt/lists/*

ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64
ENV PATH $JAVA_HOME/bin:$PATH

COPY requirements.txt /requirements.txt
USER airflow
RUN pip install --user --upgrade pip
RUN pip install --no-cache-dir --user -r /requirements.txt

อันนี้เป็น requirements.txt ครับ:

pyspark==3.5.1

delta-spark==3.1.0

ขอบคุณมากๆครับ

ยังไม่แน่ใจว่าจะสามารถแก้ปัญหาได้เปล่านะครับ ลองดู efficient_data_processing_spark/data-processing-spark/1-lab-setup/containers/spark/Dockerfile at main · josephmachado/efficient_data_processing_spark · GitHub ครับ ใช้ Docker Image ของ Delta Lake เลย ที่มี Spark อยู่แล้ว แล้วก็มีเซต PYTHONPATH อยู่ เพื่อให้ใช้ PySpark ได้ครับ

ใช้งานได้แล้วครับ ขอบคุณมากๆครับสำหรับการช่วยเหลือ :grinning:

1 Like