Spark explode() 사용해서 List 로 된 컬럼을 행으로 분리하기
2023. 10. 1. 17:57
데이터 엔지니어링/Spark
Spark Dataframe 에 다음과 같이 리스트 형태로 들어간 컬럼이 있을 것이다. scala> val df = Seq(("Nam", List("A", "B", "C", "D"))).toDF("name", "grade") df: org.apache.spark.sql.DataFrame = [name: string, grade: array] scala> df.show() +----+------------+ |name| grade| +----+------------+ | Nam|[A, B, C, D]| +----+------------+ 이런 경우에 grade 라는 컬럼을 각 row 로 분리할 필요가 생길수도 있다. 이때, explode() 함수를 통해서 리스트를 각 row 로 분리해줄 수 있다. 원하는 ..
Spark User Defined Functions (UDFs)
2023. 10. 1. 17:29
데이터 엔지니어링/Spark
Spark 를 사용하다보면 UDFs 를 사용하여 새로운 column 을 만드는 경우가 많이 있다. 그래서 Spark UDFs 에 대해서 정확하게 무엇을 말하고 어떻게 사용하는 지에 대해서 정리해보려고 한다. 정리는 아래의 공식 문서를 참고해서 정리해보았다. https://spark.apache.org/docs/latest/sql-ref-functions-udf-scalar.html Scalar User Defined Functions (UDFs) - Spark 3.5.0 Documentation spark.apache.org Spark User-Defined Functions Spark User-Defined Functions (UDFs) 는 하나의 행에서 동작하는 사용자가 프로그래밍할 수 있는 루틴을 ..
Spark multi process error in macOS
2023. 9. 27. 11:26
데이터 엔지니어링/Spark
macos 에서 pyspark 를 통해 디버깅을 하던 도중 다음과 같은 에러가 발생했다. To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 23/09/27 10:36:44 WARN package: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.sql.debug.maxToStringFields'. objc[7304]: +[__NSCFConstantString initialize] may have been in progress in..
Spark JDBC Data Source Option
2023. 9. 26. 12:32
데이터 엔지니어링/Spark
spark 를 통해 JDBC 를 통해 데이터베이스의 테이블을 불러올 때 사용하는 옵션에 대해서 정리해보려고 한다. Spark JDBC To Other Databases 해당 내용은 야래의 spark 공식 문서에서 확인할 수 있다. https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html JDBC To Other Databases - Spark 3.5.0 Documentation spark.apache.org 문서를 보면 다음과 같이 설명이 되어있다. Spark SQL 은 JDBC 를 사용해서 다른 데이터베이스들로부터 데이터를 읽을 수 있는 data source 를 포함하고 있다. 이 기능은 JdbcRDD 를 사용하는 것보다 선호된다. 그 이유는 D..
spark config 리스트 정리 (spark.config.set)
2023. 9. 17. 19:44
데이터 엔지니어링/Spark
spark config 에 대해서 정리하려고 한다. 사용해본 config 설정이 많지는 않지만 여러 config 들에 대해서 계속해서 정리해나가야겠다. spark config setting 방법 # spark session 생성 spark = SparkSession.builder.appName("test").getOrCreate() # config 예시 spark.conf.set("spark.sql.inMemoryColumnarStorage.compressed", True) spark.conf.set("spark.sql.adaptive.enabled", True) spark.conf.set("spark.sql.adaptive.coalescePartitions.enabled", True) spark.co..
MacOS m1 openjdk 설치하기
2023. 9. 17. 19:30
프로그래밍 언어/Java
맥북 m1 에서 openjdk 를 설치하는 과정에 대해서 정리해보려고 한다. brew openjdk 버전 확인 brew 를 통해 설치할 수 있는 openjdk 버전 확인하기 $ brew search openjdk ==> Formulae openjdk openjdk@11 openjdk@17 openjdk@8 openj9 openvdb brew 를 통해 openjdk 설치하기 나는 openjdk 17 버전을 설치하려고 한다. $ brew install openjdk@17 java version 확인하기 openjdk 를 설치하고나서 java 의 버전을 확인하려는데 다음과 같이 메시지가 나왔다. $ /usr/libexec/java_home -V The operation couldn’t be completed...
LLM(Large Language Model) 이해하기
2023. 9. 17. 19:03
AI/Model
먼저 LM(Language Model, 언어 모델) 에 대해서 이해하고 넘어가려고 한다. 언어 모델이란 인간의 언어를 이해하고 생성하도록 훈련된 일종의 인공지능 모델이라고 한다. 주어진 단어 내에서 패턴이나 구조, 관계를 학습하여 텍스트 번역과 같은 좁은 AI 작업에서 주로 활용되었다고 한다. LLM(Large Language Model) 이란 그럼 LLM(Large Language Model) 이란 무엇일까? 해석 그대로 대량의 언어 모델이라고 볼 수 있다. LLM 은 딥러닝 알고리즘과 통계 모델링을 통해 자연어 처리 작업(Natural Language Processing, NLP)을 수행하는 데 사용한다고 한다. 이 모델은 사전에 대규모의 언어 데이터를 학습하여 문장 구조나 문법, 의미 등을 이해하고..
Git cherry pick 이란
2023. 9. 10. 21:28
버전관리/git & github
git 을 사용하면서 cherry pick 이라는 것이 있다고 해서 정리해보려고 한다. git cherry pick 이란 git 에서 cherry-picking 이란 하나의 브랜치에서 단일 커밋을 가져와서 다른 브랜치에 추가하는 것을 말한다. 단일 커밋에 포함된 변경 사항이 필요하지만 해당 브랜치의 전체 내용을 다른 브랜치로 가져올 수 없거나 가져오고 싶지 않은 경우 내가 원하는 커밋을 가져올 수 있게 골라야 한다. 이 때 cherry-picking 을 통해 원하는 커밋을 가져와 다른 브랜치에 추가할 수 있도록 해준다. 예를 들어, 위의 사진과 같이 main 브랜치와 develop 브랜치가 있고 순서대로 커밋이 된다고 할 때 develop 브랜치의 B 커밋을 가져와 main 브랜치에 E 커밋 다음에 추가..