Project/D.D.P (Datahub)

[Trouble shooting] Datahub S3 메타데이터 주입시 에러 발생

Hyunie 2023. 7. 10. 11:08
728x90
반응형

 처음 발생한 에러는 다음과 같다.

  File "/home/ubuntu/.local/lib/python3.10/site-packages/datahub/ingestion/run/pipeline.py", line 122, in _add_init_error_context
    raise PipelineInitError(f"Failed to {step}: {e}") from e
datahub.ingestion.run.pipeline.PipelineInitError: Failed to configure the source (s3): Java gateway process exited before sending its port number

 위 에러를 보고 자바가 설치되어있지 않기 때문이라고 생각해서 자바를 설치했다.

 

sudo apt-get update
sudo apt upgrade
sudo apt-get install openjdk-11-jdk

그 다음 자바 프로파일을 만들어 적용시킨다.

sudo vi /etc/profile.d/java.sh

###
#java profile 내용
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
###

source /etc/profile

 

다시 메타데이터 주입 cmd를 실행시키니 다음과 같은 에러가 발생했다.

py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 9.0 failed 1 times, most recent failure: Lost task 0.0 in stage 9.0 (TID 9, ip-172-31-20-58.ap-northeast-2.compute.internal, executor driver): java.io.IOException: Cannot run program "python": error=2, No such file or directory

이 에러는 spark가 설치되어 있지 않아 생긴 에러다. 공식문서에 보면 S3 메타데이터 주입 기능을 사용하기 위해서는 spark와 hadoop이 설치되어 있어야한다고 나와있다.

그래서 spark 홈페이지에 들어가서 설치했다.

release version을 선택해야하는데 3.0이 없어 그냥 3.3.2 with hadoop으로 설치했더니 다 설치하고 다시 메타데이터 주입시 다음과 같은 에러가 떴다. (공식문서에 적혀있는 버전은 Spark 3.0.3 with Hadoop 3.2)

Command failed: An error occurred while calling o62.run.
: java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.expressions.aggregate.AggregateFunction.toAggregateExpression(Z)Lorg/apache/spark/sql/catalyst/expressions/aggregate/AggregateExpression;

딱 봐도 버전문제라는 삘이 왔다. 그래서 결국 다시 돌아가서 아카이브된 이전 버전 다운로드 링크를 찾아서 다운받은 후에야 성공적으로 메타데이터를 주입할 수 있었다.

sudo wget https://archive.apache.org/dist/spark/spark-3.0.2/spark-3.0.2-bin-hadoop3.2.tgz
sudo rm spark-*-.tgz
sudo mv spark-* /opt/spark
sudo vi /etc/profile.d/spark.sh
source /etc/profile

참고로 spark profile은 다음과 같이 설정하면 된다.

export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$PATH

export PYSPARK=/usr/bin/python3
export PYSPARK_PYTHON=python3.10

 

결론: 공식문서 말을 잘 듣자

728x90
반응형