[Airflow] airflow - spark INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0) 에서 멈춤 해결
https://nervertheless.tistory.com/232
[Airflow] airflow - spark 연동
프로젝트를 진행하다보니 airflow에서 spark job을 실행해야 하는 일이 생겼다.SparkSubmitOperator를 사용하여 spark job을 실행하기 위해서는 airflow에 설치 되어야 할 것들이 몇개 있다. 📌Airflow 설치 목
nervertheless.tistory.com
여기서 aws 연결하는 잡이 실행이 더 안되고 멈추는 상황이 발생했었다.
spark에서는 잘 실행이 되었어서 뭐가 문제인지 도저히 모르겠어서 답답했었다.
여러 테스트 코드로 실행을 해보다가 실행이 잘되던 코드도 sparksession을 aws에 있던 세션으로 사용되니까 계속 실행중 상태에 머물길래 이상해서 코드를 다시 살펴보다가 내가 master 설정을 안했다는 걸 깨달음..
def create_spark_session():
spark = SparkSession.builder \
.appName("s3 read test") \
.master("local[*]") \
.config("spark.hadoop.fs.s3a.access.key", AWS_ACCESS_KEY_ID) \
.config("spark.hadoop.fs.s3a.secret.key", AWS_SECRET_ACCESS_KEY) \
.config("spark.hadoop.fs.s3a.endpoint", "s3.amazonaws.com") \
.getOrCreate()
return spark
def read_and_count_csv():
spark = create_spark_session()
df = spark.read.csv(f"s3a://yr-s3-project/final/spotify_join_data_2025-03-06.csv", header=True).coalesce(1)
row_count = df.count()
print(f'count: {row_count}')
logging.info(f'count: {row_count}')
행 집계가 잘 되어 출력 되는 것을 확인할 수 있다.
바보짓 아닌 바보짓(...)으로 문제가 잘 해결된 건 좋은데 그럼 왜 spark master에서 spark-submit으로 실행할 때는 사용 CPU를 설정하지 않아도 실행이 잘 되었는데, airflow에서 spark-submit으로 실행할 때는 안된 건지 궁금해졌다...
아마 클라이언트 모드로 airflow에서 실행 될 때 airflow에 spark.conf 파일이 없어서 그런 건가 싶기도 하고 spark에서는 conf 파일에서 기본 설정 있다고 배웠던 것 같아서...
아 나중에 찾아서 추가해놔야지
암튼 진짜 바보짓으로 3일 삽질한게 너무 어이없어서 써봄...