데이터 엔지니어링/Spark
-
[Spark] Postgre의 데이터 JDBC 커넥터 활용하여 병렬 처리 해보기(feat, partitionColumn,lowerBound, upperBound, numPartitions)데이터 엔지니어링/Spark 2023. 2. 12. 14:10
Spark에서 직접 PostgreSql 연결하는 법 Spark는 java기반 오픈 소스 툴이기 때문에 JDBC(Java Database Connectivity)를 이용하여 데이터베이스에 접근 할 수 있습니다. 아래 코드가 JDBC를 이용하여 select를 할 수 있는 상태를 만들어 놓은 것이다. jdbcDF라는 객체를 아래와 같이 만들고 쿼리를 날리면 데이터를 조회 할 수 있습니다. jdbcDF = spark.read \ .format("jdbc") \ .option("url", "jdbc:postgresql:dbname") \ .option("dbtable", "public.tablename") \ .option("user", "username") \ .option("password", "passwor..
-
[Apache Spark Job]구동 방식 이해하기 (Submit job, physical planning, stage, )데이터 엔지니어링/Spark 2022. 8. 3. 21:10
대충 요약하면 아래와 같다. Driver Program - 개발자가 작성한 코드 부분 Cluster Manager - job을 어떻게 동작 할 지 정해주는 Manager ex) yarn, mesos등 Worker node - Executor와 Task들이 존재 하고 실제로 작업을 진행하는 곳 Spark job의 구성 Spark Submit job이나 jar파일 같이 실행 하게 되면 아래의 형식으로 구성되어 진행 되게 된다. spark-Submit을 하게 되면 Job으로 Cluster Manager에게 할당되게 되고 Stage별로 작업을 나눈다음 Stage별로 들어갈 용량 및 작업량을 파악 하여 Executor에서 Task를 진행한다. 그리고 그 결과값을 Cluster Manager에게 Cluster Ma..
-
[Apache Spark]Spark RDD의 한계점 및 Dataframe, SQL 등장, 최적화 원리데이터 엔지니어링/Spark 2022. 7. 11. 20:23
RDD Shuffling & partition이해하기 Shuffling이란 썪는다는 의미이다. Partition은 부분으로 나눈다는 의미도 된다. RDD가 분산처리를 하기 위해 데이터를 Shuffling하고 Partition을 나눠서 데이터 연산 처리를 한다음 데이터를 추출하여 받는다. 하지만, Shuffling을 하면 연산처리는 어떻게 작용을 할까? Shuffling을 하게 되면 Partition 나뉜 데이터에서 네트워크 연산(node들의 통신)이 일어나게 된다. 연산 속도는 인메모리 >> 디스크 I/O >> 네트워크 순으로 빠르다. 그런데 Shuffling은 네트워크 연산이기 때문에 앞에서 데이터가 어느 정도 정리가 된 후에 해야한다. 아래의 그림을 보면 어려가지 key-value값이 있는데 여기서 ..
-
[Spark]RDD 이해하기데이터 엔지니어링/Spark 2022. 6. 19. 23:23
데이터 연산 방식 이해하기 RDD를 들어가기 전에 먼저 데이터 연산 방식을 이해 해야한다. 이를 이해하면 RDD가 왜 나왔는지 Spark에서는 RDD가 왜 사용돼는지 간접적으로 이해 할 수 있다. 데이터 연산 방식은 병렬처리 방식 분산 처리 방식이 있다. 병렬(Data-Parallel) 처리 방식 데이터를 여러개로 쪼갠다. 여러 쓰레드에 쪼갠 데이터를 넣어 task를 적용한다 각자 만든 결과값을 반환 받아 합친다. 위와 같은 일렬의 과정으로 결과값을 얻는다. 분산처리 방식(Distributed Data-Parallel) 데이터를 여러개로 쪼개서 여러 노드로 보낸다. 여러 노드에서 각자 독립적인 task를 적용한다. 각자 만든 결과값을 합치는 과정을 한다. 위와 같은 일렬의 과정을 통해 결과값을 얻어 반환..
-
[Spark] 스파크란 무엇인가?(spark 등장배경, 쓰는이유, 빠른이유)데이터 엔지니어링/Spark 2022. 6. 18. 19:25
스파크란? 빅데이터 처리를 위한 오픈 소스 고속 분산처리 엔진이다. 스파크를 알기 위해서는 빅데이터의 문제를 알아야 한다. 우리가 아는 빅데이터랑 많은 양의 데이터를 뜻한다. 그런데 지금 빅데이터를 쌓아 오면서 생기는 문제점이 있었다. 빅데이터 문제 데이터의 규모가 증가 데이터 규모의 증가로 인한 처리 속도 문제 데이터 포맷의 다양성 증가 빅데이터를 축적하여 활용할려 봤더니 데이터가 너무 많이 쌓이고, 그래서 이 규모를 처리할려고 하니 속도가 문제가 됬으며, 또한 파일 포맷( CSV, AVRO, Parquet등등) 엄청나게 다양한 파일 포맷이 등장하면서 종류도 많아졌다. 빅데이터 처리를 하기 위해서 많은 고민들을 해오게 되었다고 한다. Apache Hadoop의 등장 이를 처리 하기 위해서 yahoo에서..
-
[데이터 엔지니어링 설치 방법 정리] Hadoop, spark, pyspark, anaconda (feat. windows 10)데이터 엔지니어링/Spark 2022. 6. 18. 17:41
데이터 엔지니어링에 필요한 툴 설치 방법 정리 스파크 공부를 하기 위해서 먼저 다른 툴들을 설치할려고 했는데, 다른 툴들도 다 설치가 필요하더라 그래서 한꺼번에 정리하는 것이 좋을 것 같아 포스팅하게 되었다. 스파크는 java, python, scala를 모두 제공하는 프로그램이다. 그래서 스파크를 사용하기 위해서는 java(scala는 java기반으로 만들어진 언어)와 python을 구축해놓으면 된다. 다른 패키지들은 spark를 사용하여 데이터 처리를 하기 위해 사용되는 패키지들이여서 다운로드 받아 둔다. 그리고 이 환경을 구축하기 위해 모든 설치를 도와주는 툴이 있는데 이 anaconda이다 anaconda를 이용하여 설치 해보자. Anaconda 다운로드 먼저 anaconda 설치 아나콘다 사이트..