
Spark의 Murmur3 hash 구현이 일반적인 Murmur3 구현과 약간 다르다는 점을 알고 계신가요?이번 글에서는 Spark에서 hash() 함수를 사용하며 겪었던 Murmur3 해시의 호환 문제에 대해 다뤄보겠습니다. Spark에서의 Hash 함수에 대해 다룬 이전 게시글을 읽고 오시면 이해에 도움이 됩니다! Spark 속 해시 이야기 - Murmur3와 xxHashSpark에서는 데이터를 분산하고 처리 속도를 높이기 위해 내부적으로 해시를 폭넓게 활용합니다.해시는 데이터를 균등하게 분산시키고 복잡한 값을 빠르게 비교할 수 있다는 장점이 있습니다.openkmj.tistory.com 문제 상황Spark를 통해 데이터를 집계한 후, 그 결과를 바탕으로 key-value lookup 테이블을 생성하..

Spark에서는 데이터를 분산하고 처리 속도를 높이기 위해 내부적으로 해시를 폭넓게 활용합니다.해시는 데이터를 균등하게 분산시키고 복잡한 값을 빠르게 비교할 수 있다는 장점이 있습니다. 이번 글에서는 해싱의 기본적인 개념과 Spark에서 사용되는 해시 함수의 작동방식에 대해 살펴보겠습니다. 해싱이란?해싱(Hashing)은 입력값을 고정된 크기의 출력값(해시값)으로 변환하는 과정을 말합니다.# Hash Example"apple" -> 100"banana" -> 26"x" -> 11225 -> 99 위와 같은 해시함수가 있을 때, "apple"과 "banana"를 직접 비교하는 대신 해시값인 100과 26을 비교함으로써 효율적으로 값을 비교할 수 있습니다. 이처럼 해시는 데이터를 고정된 크기로 압축하여 ..

Spark에서 데이터를 다룰 때는 보통 소스 데이터로부터 고유한 ID를 제공받는 경우가 많습니다. 하지만 모든 데이터가 그렇게 친절하진 않은데요, 제공된 ID가 없거나 explode 함수 등을 통해 새로운 행을 생성하는 경우처럼 각 행에 대해 직접 고유한 ID를 생성해야 하는 상황이 종종 있습니다. 관계형 데이터베이스에 익숙하다면 아마 Auto Increment Key가 먼저 떠오를텐데요, 분산 환경에서는 이야기가 조금 다릅니다.순차적으로 증가하는 값을 생성하기 위해서는 각 노드들이 공유하는 전역 상태가 필요한데, 이를 유지하기 위한 락이나 동기화 같은 메커니즘이 성능 저하와 병목을 발생시킵니다. 그래서 대부분의 분산 시스템에서는 이를 지원하지 않고 분산 환경에 적합한 다른 방식의 키를 사용합니다. (R..
PySpark에서 MySQL를 연결하여 사용해본다. 디펜던시 설치지난번과 유사하게 mysql connecter jar 패키지를 디펜던시로 갖는다. 지난번처럼 pyspark에서 패키지를 관리하는 것 같지는 않으니 따로 jar 파일을 다운받아서 사용하도록 하겠다.링크에서 다운받을 수 있다. Docker로 Mysql 로컬 서버 열기1. mysql 이미지 내려받기docker pull mysql 2. 실행docker run --name CONTAINER_NAME -e MYSQL_ROOT_PASSWORD=PASSWORD -d -p 3306:3306 mysql:latest 3. 데이터베이스 추가 및 테이블 생성mysql을 실행하여 SQL 쿼리로 간단하게 데이터베이스와 테이블을 생성한다.docker exec -it m..
PySpark를 설치하고 S3에 업로드된 데이터를 읽는 코드를 작성해본다. PySpark 설치 및 실행1. pip을 통해 pyspark 패키지를 설치pip install pyspark 2. Java 설치Spark는 JVM 위에서 동작하기 때문에 Java가 설치되어있어야한다.Java 설치 3. 설치 확인간단한 코드를 실행하여 확인할 수 있다.from pyspark.sql import SparkSessionspark = SparkSession.builder.getOrCreate()df = spark.createDataFrame( [ (1, "Alice", 34), (2, "Bob", 36), (3, "Cathy", 30), ], ["id", "name",..
- Total
- Today
- Yesterday