전체 글
-
spark maxRecordsPerFile 로 파일 크기 관리카테고리 없음 2021. 5. 1. 23:45
df.write.option("maxRecordsPerFile", 5000) 파일당 5000개의 row를 가지도록 저장된다. spark property에서도 spark.sql.files.maxRecordsPerFile로 설정할 수 있다. spark.apache.org/docs/latest/configuration.html Configuration - Spark 3.1.1 Documentation Spark Configuration Spark provides three locations to configure the system: Spark properties control most application parameters and can be set by using a SparkConf object, or..
-
spark에서 hadoop file system 경로를 읽어오지 못할 때 해결카테고리 없음 2021. 3. 24. 18:14
hadoop HDFS Name node를 변경에 따라 spark가 실행되는 노드들의 fs.defaultFS(core-site.xml)를 변경하였다. 하지만 spark cluster 환경과 shell 환경에서 fs.getUri를 하면 default 값인 hdfs:/// 로 경로가 잡혔다. HADOOP_HOME, HADOOP_CONF_DIR 환경 변수가 제대로 잡히지 않아 발생한 문제였다. HADOOP_CONF_DIR가 없으니 conf 설정(core-site.xml)을 읽어오지 못한 문제... 다음과 같이 설정해주니 문제가 해결되었다. vi ~/.bashrc JAVA_HOME= '경로에 맞춰서 설정' HADOOP_HOME='경로에 맞춰서 설정' SPARK_HOME='경로에 맞춰서 설정' HADOOP_CONF..
-
Bayesian OptimizationML 2021. 3. 1. 22:17
머신 러닝에서 Hyperparameter를 설정해 줄 때, 이를 사람이 직접 설정해주어도 되지만 자동화하여 찾는 방법이 있다. GridSearch, RandomSearch, Bayesian Optimization 등이 대표적인 방법들이다. GridSearch는 구간 전역을 탐색하기 때문에 Hyperparameter의 종류와 구간이 커질수록 탐색 시간이 기하급수적으로 늘어나고, RandomSearch는 임의로 탐색을 진행하기 때문에 시간은 줄어들지만 정확도가 낮아질 수 있다. 최근 업무에서 Bayesian Optimization을 도입하게 되어서 이를 간단히 정리해보자 한다. Bayesian Optimization이란 목적 함수 f(x)를 최대로 만드는 최적해(x) 도출하는 기법이다. 여기서 목적 함수는 ..
-
Zulu(Open JDK) 설치카테고리 없음 2020. 12. 5. 16:54
zulu8.38.0.13-ca-jdk8.0.212-linux_x64.tar.gz 압축 파일 다운하거나 다른 서버에서 복사 scp {복사하려는 파일명} {서버 사용자 아이디}@{서버 주소}:{서버의 복사 경로 위치} 심볼릭 링크 jdk 생성 ln -s {원본파일} {링크파일} vi ~/.bashrc JAVA_HOME = "심볼릭 링크" 로 설정, export PATH JAVA_HOME/bin으로 설정 source ~/.bashrc 나중에 java version을 변경하는 경우, java version을 모두 바꾸어 주어야 한다
-
spark shuffle 피하고 broadcast join 으로 속도 빠르게 하기카테고리 없음 2020. 12. 5. 16:35
import org.apache.spark.sql.functions.broadcast BigDF.join(broadcast(SmallDF), SmallDF.col("ID") === BigDF.col("ID")) SELECT /*+ BROADCAST(SmallDF) */ * FROM LargeDF JOIN SmallDF ON LargeDF.key = SmallDF.key 너무 큰 테이블(BigDF)과 작은 테이블(SmallDF)을 JOIN하였는데 나머지는 excutor는 모두 끝났는데 한 executor에서 계속 task 실행 중이라 작업이 오래 걸렸다. spark의 shffle join은 두 테이블에서 각 executor에 알맞는 서로 data를 복사하기 때문에 속도가 느려진다. 한 테이블이 작다면 브로..
-
scala dataframe에서 null 값 coalesce으로 채우기프로그래밍/Scala 2020. 12. 3. 20:05
coalesce은 partition을 줄여주는 역할 뿐만 아니라 null 값을 채워줄 때도 사용할 수 있다. 위와 같은 data frame이 있을 때, first라고 기술하였기 때문에 DT 정렬 기준으로 첫번째 값(1)으로 null이 채워진다. import org.apache.spark.sql.expressions.Window val w = Window.orderBy("DT") ex_df.withColumn("ex_col", coalesce(col("ex_col"), first(col("ex_col"), true).over(w))) 가장 마지막 값인 3으로 채워지길 바란다면 window에 desc을 걸거나 val w = Window.orderBy("DT").desc ex_df.withColumn("ex_..
-
spark error no space left on device 에러 해결빅데이터/Spark 2020. 12. 1. 03:22
join 작업이 많은 코드를 돌렸더니 ERROR: no space left on device 가 발생했다. stack overflow 검색 결과, spark.local.dir를 변경하라고 나왔다. Spark Application Properties 중 하나였는데 spark.local.dir Directory to use for "scratch" space in Spark, including map output files and RDDs that get stored on disk. This should be on a fast, local disk in your system. It can also be a comma-separated list of multiple directories on different..
-
[if kakao] 알아서 저금해주는 똑똑한 저금통 자동 모으기 개발강의 및 컨퍼런스 2020. 11. 30. 23:10
Airflow Python: pickle Spark: 고객별로 개인화된 11개 모델, 처리 대상을 10,000명씩 파티셔닝해서 실행 ARIAM, LSTM, prophet 등 6개, ensemble 5개, 총 11개의 모델 중 가장 성능이 좋은 모델 선택 Get data 학습 예측 평가지표 RMSE: picked가 가장 좋음 Precision(정확도): 하락으로 예측되는 대상 중에 실제 하락인 비중 → 중요 Recall(재현율): 하락 예측 재현율 → 실제로 하락하는 대상 중에 하락으로 예측에 성공한 비중 우리 모델에서는 하락을 상승으로 예측해버리는 오류를 막아야 함 왜냐면 저축을 많이 해버리면 사용자가 당황할 수 있으니까 적게 하는 쪽으로 보수적으로 예측 picked가 가장 좋음 보통 정확도랑 재현율은 ..