'데이터 엔지니어'로 성장하기

정리하는 걸 좋아하고, 남이 읽으면 더 좋아함

Data/Spark 8

Spark) createOrReplaceTempView

빅지기 책 233쪽에 보면 `SparkSql을 사용하면, 데이터프레임을 SQL로 집계할 수 있다.` 라고 말하며 createOrReplaceTempView를 이야기해준다. 항상 df으로 작업하던 나에게 꿀같은 소식. 난 SQL이 더 편한다. df.createOrReplaceTempView('test') spark.sql("select * from test").show(3) +-------+---------+ | col1| col2| +-------+---------+ | a| 1| | b| 2| | c| 3| +-------+---------+ only showing top 3 rows하지 않는 한, 쿼리를 실행할 때마다 항상 최신의 데이터가 들ㅇ쳐진다. spark thrift server에서 thrif..

Data/Spark 2023.03.27

Spark) parquet file merge하기

parquet 파일이 너무 작은 조각으로 저장되서, 조회 속도에 문제가 생겼어요. 검색해보니 읽어서 원하는 크기로 저장하는 방법을 사용한다고 해요 요약 1. parquet 파일 너무 많아서 조회 속도 느림 2. repartition으로 원하는 사이즈로 저장함 설명 hdfs든, s3든 file이 많으면 속도가 느려지죠 그래서 file을 merge하는 방법을 사용해요 인터넷을 검색하면서 아래 코드처럼 repartition을 하는 방법을 찾았어요 def get_repartition_factor(dir_size): block_size = sc._jsc.hadoopConfiguration().get(“dfs.blocksize”) return math.ceil(dir_size/block_size) # returns..

Data/Spark 2022.07.09

Spark) k8s,jupyterhub에서 sparkUI 사용하기

spark ui를 jupyterhub에서 접근이 안되서 골머리를 썩는중 검색하다가 겨우 방법을 찾음 jupyterhub 접속 경로: http://10.***.29.***:30011/user/manager spark_session = SparkSession \ .builder.appName(APP_NAME) \ .master("k8s://https://172.17.***.**:6443") \ .config('spark.ui.proxyBase', '/user/manager/proxy/4040') \ jupyterhub spark UI 접속 경로: http://10.***.29.***:30011/user/manager/proxy/4040/environment/ 성공! 물론 pip install로 proxy 관..

Data/Spark 2022.03.24

Spark) spark_submit시 spark.app.id warning_ jupyterhub

jupyterhub에서 spark_submit을 하는데 warning이 뜬다. 예외처리해주면되는데, 궁금해서 알아봄 spark.app.id는 뭘까 import os, posixpath, socket import pyspark from pyspark.sql import SparkSession ​ spark = ( SparkSession.builder.appName("hgkim-spark") .config("spark.kryoserializer.buffer.max", "1024m") .config("spark.sql.sources.partitionOverwriteMode", "dynamic") .master("k8s://https://172.17.***.56:6443") .config("spark.kuber..

Data/Spark 2022.03.24

Spark) spark volume data spill 이슈_spark-local-dir

한줄요약: spark-local-dir 로 실행안하는 사용자들 어칼까.. 이러다 다 죽음 ㅜㅜ 요약 spark-submit의 대량 read 작업시 spark job이 죽음 대량 작업이라 data spill 관련 문제로 추정 spark-local-dir 을 이용해 해결 설명 1. spark-submit의 대량 read 작업시 spark job이 죽음 2. 대량 작업이라 data spill 관련 문제로 추정 예전에 airflow로 잡돌릴 때, pvc 를 생성해서 해결해줬던 것으로 기억 (이름을 spark-loca-dir로 만들어주면 되는 것) https://mightytedkim.tistory.com/43 (Kubernetes) k8s와 Airflow 이용한 spark작업_SparkKubernetesOper..

Data/Spark 2022.03.21

Spark) Thrift serverHive-Metastore OOM 해결_메모리 추가할당

갑자기 월요일 아침에 확인해보니 airflow job들이 일부 죽어잇음, 일단 request/limit 수정함 상황 - 왜그런가하고 봣는데, Thrift Server 사용하는 job들만 죽음 - 에러 로그는 err_msg = java.sql.SQLException: Error running query: org.apache.thrift.transport.TTransportException - hive meta store Pod를 보니까 pool, OOM Exception in thread "pool-7-thread-921" java.lang.OutOfMemoryError: GC overhead limit exceeded 문제 hivemetastore 메모리 부족 해결 metastore.yaml을 수정함, ..

Data/Spark 2022.01.10

Spark) Spark Thrift Server 클러스터에서 올리기

한줄요약: cluster로 thrift 를 올리는 정식 방벙은 아직 안나와서, 추후에 trino로 옮겨야할 것 같다. 개요 주제: Spark thrift server를 K8S cluster에 구현해함 문제: Cluster로 Thrift Server를 실행하는 방법이 없음 해결: 'mykidong' 블로그를 통해 예시를 찾음 이 포스팅은 mkidong님의 예시를 각색해서, 오프라인 온프렘 k8s cluster에 적용한 내용이에요 먼저, Spark Thrift Server 가 무엇인지 간단히 설명하고 예제와 함께, 참고한 블로그와 다른점을 기술하도록 할게요 ㅎ thrift server란? spark 에 sql을 날릴 수 있는 Thrift Server 라는게 있어요 daemon 처럼 jdbc 를 날릴 수 있는..

Data/Spark 2021.12.19

Spark) Spark Base Image Docker Build(VM, 내부망)

spark image를 만드는 법과 VM,내부망안에서 제가 겪은 경험을 공유하려 해요 별거 아니지만 처음에 할 때는 너무 막막했었어요 ㅎ 글을 구조는 아래와 같아요 1. 상황 spark image를 만들기 VM, 내부망에서 build 실패 2. 해결 spark-3.1.2-bin-hadoop3.2/kubernetes/Dockerfile Sources.list 주석 HTTP_PROXY, HTTPS_PROXY 설정 kubernetes/dockerfiles/spark/bindings/python/Dockerfile pypi.org를 신뢰할 수 있는 host HTTP_PROXY, HTTPS_PROXY 설정 1. 상황 spark image를 만들기 spark를 실행하는 base image를 만들 때 인프라 상황이 ..

Data/Spark 2021.11.11