목록전체 글 (172)
imhamburger 님의 블로그
스파크 SQL의 특징상위 수준의 정형화 API가 엔진으로 제공된다.다양한 정형 데이터를 읽거나 쓸 수 있다.(예: json, parquet, avro, orc, csv,하이브 테이블)태블로, 파워BI, 탈렌드와 같은 외부 비즈니스 인텔리전스의 데이터 소스나 MySQL 및 PostgreSQL과 같은 RDBMS의 데이터를 JDBC/ODBC 커넥터를 사용하여 쿼리할 수 있다.스파크 애플리케이션에서 데이트베이스 안에 테이블 또는 뷰로 저장되어 있는 정형 데이터와 소통할 수 있도록 프로그래밍 인터페이스를 제공한다.SQL 쿼리를 정형 데이터에 대해 실행할 수 있는 대화형 셸을 제공한다.ANSI SQL: 2003 호환 명령 및 HiveQL을 지원한다.스파크 애플리케이션에서 스파크 SQL 사용하기 스칼라 예제)impo..
RDD- 의존성- 파티션- 연산 함수: Partition => Iterator[T] 어떤 입력을 필요로 하고 현재의 RDD가 어떻게 만들어지는지 스파크에게 가르쳐 주는 의존성이 필요하다.결과를 새로 만들어야 하는 경우에 스파크는 이 의존성 정보를 참고하고 연산을 다시 반복해서 RDD를 다시 만들 수 있다. 파티션은 스파크에게 작업을 나눠서 이그제큐터들에 분산해 파티션별로 병렬 연산할 수 있는 능력을 부여한다.스파크는 지역성 정보를 사용하여 각 이그제큐터가 가까이 있는 데이터를 처리할 수 있는 이그제큐터에게 우선적으로 작업을 보낼 것이다. RDD는 RDD에 저장되는 데이터를 Iterator[T] 형태로 만들어 주는 연산 함수를 갖고 있다. -> 이 모델에는 문제가 있다.연산 함수나 연산식 자체가 스파크에 ..
애플리케이션API를 써서 스파크 위에서 돌아가는 사용자 프로그램. 드라이버 프로그램과 클러스터의 실행기로 이루어진다. SparkSession스파크 코어 기능들과 상호 작용할 수 있는 진입점 제공. 그 API로 프로그래밍을 할 수 있게 해주는 객체.스파크 셸에서 스파크 드라이버는 기본적으로 SparkSession을 제공하지만 스파크 애플리케이션에서는 사용자가 SparkSession 객체를 생성해서 써야한다. 잡(job)스파크 액션(save(), collect())에 대한 응답으로 생성되는 여러 태스크로 이루어진 병렬 연산 스테이지(stage)각 잡은 스테이지라 불리는 서로 의존성을 가지는 다수의 태스크 모음으로 나뉜다. 태스크(task)스파크 익그제큐터로 보내지는 작업 실행의 가장 기본적인 단위 ..
CONCAT과 GROUP_CONCAT은 둘다 문자열을 합칠 때 사용한다.그렇지만 사용 목적과 동작 단위가 근본적으로 다르다.단순 비교 대상이라기보다는 “행 단위 vs 집계 단위” 함수로 구분해야 한다. CONCAT: 행 단위 문자열 결합SELECT CONCAT(first_name, ' ', last_name) AS full_nameFROM users;first_namelast_namefull_nameBurgerHamBurger Ham GROUP_CONCAT: 여러 행을 하나의 문자열로 집계SELECT user_id, GROUP_CONCAT(product_name) AS productsFROM ordersGROUP BY user_id;user_idproducts1Apple,Banana,Orange 근..
OpenAI 모듈을 설치한 후 코드를 실행시키는데 다음과 같은 에러가 발생했다.pydantic.v1.error_wrappers.ValidationError:1 validation error for ChatOpenAI __root__ Client.__init__() got an unexpected keyword argument 'proxies' (type=type_error) OpenAI 관련 모듈이랑 pydantic 도 다 설치하였는데 말이지...심지어 집에 있는 노트북에서는 해당 에러가 안떴었는데 다른 노트북으로 하니까 뜨네.. 구글링 해본 결과, 문제의 원인은 httpx가 0.28 버전으로 업데이트되면서 발생한거라고 한다.이 버전에서 더 이상 사용되지 않던 proxies 키워드가 제거되었다.OpenA..
돌아보면 2025년은 잘 해냈다기보다는 끝까지 버텼다는 표현이 더 어울리는 해였다.그리고 그 과정에서, 내가 어떤 사람인지 조금은 더 알게 됐다. 1월에 데이터 엔지니어링 부트캠프가 끝나고 3월에 A회사 데이터 엔지니어로 일을 시작했다.이름만 들으면 그럴듯하지만,실제로는 매일 “이게 맞나?”를 혼잣말처럼 반복했다.데이터팀에 혼자 있다는 사실은 생각보다 크게 다가왔다.누군가에게 물어볼 수 없다는 건,모든 선택에 이유를 붙여야 한다는 뜻이었으니까. 데이터를 쌓고, 흐르게 만들고, 사람들이 쓰게 하는 일은생각보다 조용하고, 생각보다 외로웠다.눈에 띄는 성과가 바로 보이지 않을 때도 많았다.그래도 멈출 수는 없었다.누군가는 이 바닥을 다져야 했으니까.가끔은 다른 회사의 잘 정리된 구조들을 보면서 괜히 작아지기도..
문제https://leetcode.com/problems/analyze-subscription-conversion/description/ 구독형 서비스에서 사용자 행동 패턴을 분석하려고 한다.해당 서비스는 7일간의 무료 체험 기간을 제공하며, 이후 사용자는 유료 구독으로 전환하거나 취소할 수 있다.다음 요구사항을 만족하는 해결책을 작성하시오.무료 체험에서 유료 구독으로 전환한 사용자를 찾는다.각 사용자의 무료 체험 기간 동안의 일 평균 활동 시간을 계산한다.소수점 둘째 자리까지 반올림한다.각 사용자의 유료 구독 기간 동안의 일 평균 활동 시간을 계산한다.소수점 둘째 자리까지 반올림한다.결과 테이블은 user_id 기준 오름차순으로 정렬하여 반환한다. 문제풀이SELECT *FROM (SELECT user_..
문제https://leetcode.com/problems/seasonal-sales-analysis/description/ 각 계절별로 가장 인기 있는 상품 카테고리를 찾기 계절은 다음과 같이 정의겨울(Winter): 12월, 1월, 2월봄(Spring): 3월, 4월, 5월여름(Summer): 6월, 7월, 8월가을(Fall): 9월, 10월, 11월카테고리의 인기도는 해당 계절 동안 판매된 총 수량(quantity) 을 기준으로 결정.만약 판매 수량이 동일한 카테고리가 여러 개라면, 총 매출액(수량 × 가격) 이 가장 높은 카테고리를 선택.결과 테이블은 계절을 기준으로 오름차순 정렬하여 반환. 문제풀이WITH t1 AS (SELECT *, ROW_NUMBER() OVER(PARTITIO..
에러메세지Error: An error occurred (ValidationException) when calling the BatchWriteItem operation:The provided key element does not match the schema 원인The provided key element does not match the schema→ 즉, 넣으려는 아이템의 기본 키(primary key) 가 DynamoDB 테이블 스키마의 키 정의와 다르다는 뜻.나는 PK만 맞추면 될 줄 알았는데 Sort Key가 지정되어있다면 그것도 맞춰줘야 한다고 한다.DynamoDB 테이블에 Primary Key, Sort Key 두 개 다 명시되어 있었다.- (1) Partition key만 있음 → ..
문제주어진 택시 요청(trip) 데이터에서 취소율(Cancellation Rate)을 계산하려고 한다. 1. 취소율 정의취소율은 다음과 같이 계산한다. 취소된 요청 수:해당 날짜에 발생한 요청 중 요청 상태(status)가 cancelled_by_client 또는 cancelled_by_driver 이고 클라이언트와 드라이버 모두 차단(banned)되지 않은 요청 수전체 요청 수:해당 날짜에 발생한 요청 중 클라이언트와 드라이버 모두 차단되지 않은 전체 요청 수 2. 조건클라이언트와 드라이버 모두 unbanned (banned = 'No') 인 요청만 고려날짜 범위는 2013-10-01 ~ 2013-10-03해당 날짜에 최소 1건 이상의 요청이 있는 날만 결과에 포함취소율은 소수점 둘째 자리까지 반올림문..