Athena 만으로 nested JSON을 파헤쳐 보자
JSON 데이터를 RDB의 테이블로 만들기 위해서는 json schema 그대로 nested 된 자료형을 명시하는 것이 정석이지만 실무 시 접하는 대부분의 JSON은 schema가 복잡하다보니 이를 처리하는 데에는 많은 시간과 노력이 필요합니다. 실제 예를 들어가며 말씀을 이어갈텐데요, 예시에 사용될 데이터는 shopify의 주문 이력이며 형태는 다음과 같습니다. 예시에서는 필요한 것들만 추스려 보여드렸지만 실제 컬럼은 500여개 가까이 되고 또 많은 컬럼이 struct, array 형태로 중첩되어(nested) 있다보니 이를 위해 create 문을 만들기도 또 table을 구성하기에도 어려움이 많습니다. 그래서 대부분의 데이터 조직에서 이런 귀찮음 때문에 ETL 작업은 s.......
2022-04-18 17:37:30 |
산소소년
Athena 만으로 nested JSON을 파헤쳐 보자
JSON 데이터를 RDB의 테이블로 만들기 위해서는 json schema 그대로 nested 된 자료형을 명시하는 것이 정석이지만 실무 시 접하는 대부분의 JSON은 schema가 복잡하다보니 이를 처리하는 데에는 많은 시간과 노력이 필요합니다. 실제 예를 들어가며 말씀을 이어갈텐데요, 예시에 사용될 데이터는 shopify의 주문 이력이며 형태는 다음과 같습니다. 예시에서는 필요한 것들만 추스려 보여드렸지만 실제 컬럼은 500여개 가까이 되고 또 많은 컬럼이 struct, array 형태로 중첩되어(nested) 있다보니 이를 위해 create 문을 만들기도 또 table을 구성하기에도 어려움이 많습니다. 그래서 대부분의 데이터 조직에서 이런 귀찮음 때문에 ETL 작업은 s.......
2022-04-18 17:37:30 |
산소소년
Athena 만으로 nested JSON을 파헤쳐 보자
JSON 데이터를 RDB의 테이블로 만들기 위해서는 json schema 그대로 nested 된 자료형을 명시하는 것이 정석이지만 실무 시 접하는 대부분의 JSON은 schema가 복잡하다보니 이를 처리하는 데에는 많은 시간과 노력이 필요합니다. 실제 예를 들어가며 말씀을 이어갈텐데요, 예시에 사용될 데이터는 shopify의 주문 이력이며 형태는 다음과 같습니다. 예시에서는 필요한 것들만 추스려 보여드렸지만 실제 컬럼은 500여개 가까이 되고 또 많은 컬럼이 struct, array 형태로 중첩되어(nested) 있다보니 이를 위해 create 문을 만들기도 또 table을 구성하기에도 어려움이 많습니다. 그래서 대부분의 데이터 조직에서 이런 귀찮음 때문에 ETL 작업은 s.......
2022-04-18 08:37:30 |
산소소년
Athena 만으로 nested JSON을 파헤쳐 보자
JSON 데이터를 RDB의 테이블로 만들기 위해서는 json schema 그대로 nested 된 자료형을 명시하는 것이 정석이지만 실무 시 접하는 대부분의 JSON은 schema가 복잡하다보니 이를 처리하는 데에는 많은 시간과 노력이 필요합니다. 실제 예를 들어가며 말씀을 이어갈텐데요, 예시에 사용될 데이터는 shopify의 주문 이력이며 형태는 다음과 같습니다. 예시에서는 필요한 것들만 추스려 보여드렸지만 실제 컬럼은 500여개 가까이 되고 또 많은 컬럼이 struct, array 형태로 중첩되어(nested) 있다보니 이를 위해 create 문을 만들기도 또 table을 구성하기에도 어려움이 많습니다. 그래서 대부분의 데이터 조직에서 이런 귀찮음 때문에 ETL 작업은 s.......
2022-04-18 08:37:30 |
산소소년
[pyspark] dataframe에서 UDF 사용하기
spark에서 dataframe을 다루다보면 종종 UDF(User Defined Functions)를 사용해야 하는 경우 있습니다. rdd에서는 map(lambda x: my_function(x))의 형태로 간단하게 사용할 수 있지만 dataframe에서는 추가적인 과정이 필요하다보니 이를 정리해 보았습니다. 위와 같이 단어의 첫 글자를 대문자로 변경하는 python 함수를 만들어 보았는데요. 이것을 SPARK의 dataframe에서 쓰려면 PySpark SQL의 UDF로 변경해야 합니다. 여기서 StringType()은 udf의 default return value여서 다음과 같이 생략이 가능합니다. 이후로는 아래와 같이 호출하여 사용할 수 있습니다. 또 annotation으로 좀 더 코드를 단순화 할수 있습니다. 그리고 마지막으로 SQL.......
2022-03-23 14:30:51 |
산소소년
[pyspark] dataframe에서 UDF 사용하기
spark에서 dataframe을 다루다보면 종종 UDF(User Defined Functions)를 사용해야 하는 경우 있습니다. rdd에서는 map(lambda x: my_function(x))의 형태로 간단하게 사용할 수 있지만 dataframe에서는 추가적인 과정이 필요하다보니 이를 정리해 보았습니다. 위와 같이 단어의 첫 글자를 대문자로 변경하는 python 함수를 만들어 보았는데요. 이것을 SPARK의 dataframe에서 쓰려면 PySpark SQL의 UDF로 변경해야 합니다. 여기서 StringType()은 udf의 default return value여서 다음과 같이 생략이 가능합니다. 이후로는 아래와 같이 호출하여 사용할 수 있습니다. 또 annotation으로 좀 더 코드를 단순화 할수 있습니다. 그리고 마지막으로 SQL.......
2022-03-23 14:30:51 |
산소소년
[pyspark] dataframe에서 UDF 사용하기
spark에서 dataframe을 다루다보면 종종 UDF(User Defined Functions)를 사용해야 하는 경우 있습니다. rdd에서는 map(lambda x: my_function(x))의 형태로 간단하게 사용할 수 있지만 dataframe에서는 추가적인 과정이 필요하다보니 이를 정리해 보았습니다. 위와 같이 단어의 첫 글자를 대문자로 변경하는 python 함수를 만들어 보았는데요. 이것을 SPARK의 dataframe에서 쓰려면 PySpark SQL의 UDF로 변경해야 합니다. 여기서 StringType()은 udf의 default return value여서 다음과 같이 생략이 가능합니다. 이후로는 아래와 같이 호출하여 사용할 수 있습니다. 또 annotation으로 좀 더 코드를 단순화 할수 있습니다. 그리고 마지막으로 SQL.......
2022-03-23 05:30:51 |
산소소년
[pyspark] dataframe에서 UDF 사용하기
spark에서 dataframe을 다루다보면 종종 UDF(User Defined Functions)를 사용해야 하는 경우 있습니다. rdd에서는 map(lambda x: my_function(x))의 형태로 간단하게 사용할 수 있지만 dataframe에서는 추가적인 과정이 필요하다보니 이를 정리해 보았습니다. 위와 같이 단어의 첫 글자를 대문자로 변경하는 python 함수를 만들어 보았는데요. 이것을 SPARK의 dataframe에서 쓰려면 PySpark SQL의 UDF로 변경해야 합니다. 여기서 StringType()은 udf의 default return value여서 다음과 같이 생략이 가능합니다. 이후로는 아래와 같이 호출하여 사용할 수 있습니다. 또 annotation으로 좀 더 코드를 단순화 할수 있습니다. 그리고 마지막으로 SQL.......
2022-03-23 05:30:51 |
산소소년
Cloud Native AI/ML 서비스 개발기
대부분의 ML/AI 서비스를 개발하는 과정은 데이터 사이언티스트, 데이터 엔지니어, 솔루션 아키텍트, 시스템(클라우드) 엔지니어 역할을 수행할 수 있는 여러 조직이 있어야 원활하게 진행이 되며 분석 → 데이터 준비 → 개발 → 학습 → 배포 → 리뷰 → 다시 분석 ... 등의 길고 지루한 과정이 반복되기에 많은 투자 대비 결과가 좋지 못한 경우가 많습니다. 그렇다보니 멀티롤을 수행하는 MLOps(머신러닝작업) 조직을 만들어 이러한 과정을 체계화/단순화 하려는 움직임을 주위에서 쉽게 관찰할 수 있으며 저 또한 이러한 내/외부의 어려움들을 해소하기위해 쉽게 사용하는 AI서비스를 만들고 있기도 합니다. (https://blog.naver.com/airguy.......
2022-03-18 15:03:47 |
산소소년
Cloud Native AI/ML 서비스 개발기
대부분의 ML/AI 서비스를 개발하는 과정은 데이터 사이언티스트, 데이터 엔지니어, 솔루션 아키텍트, 시스템(클라우드) 엔지니어 역할을 수행할 수 있는 여러 조직이 있어야 원활하게 진행이 되며 분석 → 데이터 준비 → 개발 → 학습 → 배포 → 리뷰 → 다시 분석 ... 등의 길고 지루한 과정이 반복되기에 많은 투자 대비 결과가 좋지 못한 경우가 많습니다. 그렇다보니 멀티롤을 수행하는 MLOps(머신러닝작업) 조직을 만들어 이러한 과정을 체계화/단순화 하려는 움직임을 주위에서 쉽게 관찰할 수 있으며 저 또한 이러한 내/외부의 어려움들을 해소하기위해 쉽게 사용하는 AI서비스를 만들고 있기도 합니다. (https://blog.naver.com/airguy.......
2022-03-18 15:03:47 |
산소소년
Cloud Native AI/ML 서비스 개발기
대부분의 ML/AI 서비스를 개발하는 과정은 데이터 사이언티스트, 데이터 엔지니어, 솔루션 아키텍트, 시스템(클라우드) 엔지니어 역할을 수행할 수 있는 여러 조직이 있어야 원활하게 진행이 되며 분석 → 데이터 준비 → 개발 → 학습 → 배포 → 리뷰 → 다시 분석 ... 등의 길고 지루한 과정이 반복되기에 많은 투자 대비 결과가 좋지 못한 경우가 많습니다. 그렇다보니 멀티롤을 수행하는 MLOps(머신러닝작업) 조직을 만들어 이러한 과정을 체계화/단순화 하려는 움직임을 주위에서 쉽게 관찰할 수 있으며 저 또한 이러한 내/외부의 어려움들을 해소하기위해 쉽게 사용하는 AI서비스를 만들고 있기도 합니다. (https://blog.naver.com/airguy.......
2022-03-18 06:03:47 |
산소소년
Cloud Native AI/ML 서비스 개발기
대부분의 ML/AI 서비스를 개발하는 과정은 데이터 사이언티스트, 데이터 엔지니어, 솔루션 아키텍트, 시스템(클라우드) 엔지니어 역할을 수행할 수 있는 여러 조직이 있어야 원활하게 진행이 되며 분석 → 데이터 준비 → 개발 → 학습 → 배포 → 리뷰 → 다시 분석 ... 등의 길고 지루한 과정이 반복되기에 많은 투자 대비 결과가 좋지 못한 경우가 많습니다. 그렇다보니 멀티롤을 수행하는 MLOps(머신러닝작업) 조직을 만들어 이러한 과정을 체계화/단순화 하려는 움직임을 주위에서 쉽게 관찰할 수 있으며 저 또한 이러한 내/외부의 어려움들을 해소하기위해 쉽게 사용하는 AI서비스를 만들고 있기도 합니다. (https://blog.naver.com/airguy.......
2022-03-18 06:03:47 |
산소소년
추천엔진을 만들기위해 고려했던 것들
오랜만에 글을 작성하네요. 이전에 API기반으로 전처리 되지 않은 고객들의 구매 데이터를 입력으로 하여 이탈률, LTV(Life Time Value: 고객 생애 가치 CLV 라고도 합니다.)를 예측하여 데이터를 Delivery해주는 API 서비스를 만들고 있다라고 말씀 드렸었습니다. 참조: https://blog.naver.com/airguy76/222396846630 내/외부에서 활용해야할 곳이 많은데 각 서비스마다 배포 및 운영을 하기에는 어려운 점이 많다보니 1. 인프라 환경을 사용자가 고려할 필요가 없는 Packaged & Managed 서비스 2. ML, AI에 대한 전문 지식이 필요없는 AI 서비스 3. 빅데이터 엔지니어링에 대한 기반이 없어도 쉽게 활용할 수 있는 Datapipe 서비스 를 목.......
2022-02-23 18:22:02 |
산소소년
추천엔진을 만들기위해 고려했던 것들
오랜만에 글을 작성하네요. 이전에 API기반으로 전처리 되지 않은 고객들의 구매 데이터를 입력으로 하여 이탈률, LTV(Life Time Value: 고객 생애 가치 CLV 라고도 합니다.)를 예측하여 데이터를 Delivery해주는 API 서비스를 만들고 있다라고 말씀 드렸었습니다. 참조: https://blog.naver.com/airguy76/222396846630 내/외부에서 활용해야할 곳이 많은데 각 서비스마다 배포 및 운영을 하기에는 어려운 점이 많다보니 1. 인프라 환경을 사용자가 고려할 필요가 없는 Packaged & Managed 서비스 2. ML, AI에 대한 전문 지식이 필요없는 AI 서비스 3. 빅데이터 엔지니어링에 대한 기반이 없어도 쉽게 활용할 수 있는 Datapipe 서비스 를 목.......
2022-02-23 18:22:02 |
산소소년
추천엔진을 만들기위해 고려했던 것들
오랜만에 글을 작성하네요. 이전에 API기반으로 전처리 되지 않은 고객들의 구매 데이터를 입력으로 하여 이탈률, LTV(Life Time Value: 고객 생애 가치 CLV 라고도 합니다.)를 예측하여 데이터를 Delivery해주는 API 서비스를 만들고 있다라고 말씀 드렸었습니다. 참조: https://blog.naver.com/airguy76/222396846630 내/외부에서 활용해야할 곳이 많은데 각 서비스마다 배포 및 운영을 하기에는 어려운 점이 많다보니 1. 인프라 환경을 사용자가 고려할 필요가 없는 Packaged & Managed 서비스 2. ML, AI에 대한 전문 지식이 필요없는 AI 서비스 3. 빅데이터 엔지니어링에 대한 기반이 없어도 쉽게 활용할 수 있는 Datapipe 서비스 를 목.......
2022-02-23 09:22:02 |
산소소년
추천엔진을 만들기위해 고려했던 것들
오랜만에 글을 작성하네요. 이전에 API기반으로 전처리 되지 않은 고객들의 구매 데이터를 입력으로 하여 이탈률, LTV(Life Time Value: 고객 생애 가치 CLV 라고도 합니다.)를 예측하여 데이터를 Delivery해주는 API 서비스를 만들고 있다라고 말씀 드렸었습니다. 참조: https://blog.naver.com/airguy76/222396846630 내/외부에서 활용해야할 곳이 많은데 각 서비스마다 배포 및 운영을 하기에는 어려운 점이 많다보니 1. 인프라 환경을 사용자가 고려할 필요가 없는 Packaged & Managed 서비스 2. ML, AI에 대한 전문 지식이 필요없는 AI 서비스 3. 빅데이터 엔지니어링에 대한 기반이 없어도 쉽게 활용할 수 있는 Datapipe 서비스 를 목.......
2022-02-23 09:22:02 |
산소소년
Map(folium)에 HeatMap을 표현해보기!
쇼핑몰을 운영하시는 분들은 혹은 물류관련된 업무를 수행하시던 분들에게 본인들이 보유한 데이터를 이런 식으로도 쓸 수 있다라는 것을 보여줄 겸 그리고 얼마나 좋은 데이터를 갖고 있는지 인지도 시켜줄 겸 가상의 데이터를 이용해 시각화 자료를 한 번 만들어 봤습니다. 마침 유럽 업체와 협업을 하면서 영국지리 정보에 대해 관심을 갖다보니 영국 지역의 접속이력을 fake로 만들어 봤습니다. 이 dummy data를 불러와 이를 불러와 아래와 같이 Pandas DataFrame으로 만들어 봅니다. 위경도 좌표가 있으므로 이를 이용해서 시각화를 해보겠습니다. 지오코딩 정보가 있으니 일단+무조건 folium을 이용하여 지도에 뿌려봅니다. 특정 지역에 이.......
2021-09-07 21:04:00 |
산소소년
Map(folium)에 HeatMap을 표현해보기!
쇼핑몰을 운영하시는 분들은 혹은 물류관련된 업무를 수행하시던 분들에게 본인들이 보유한 데이터를 이런 식으로도 쓸 수 있다라는 것을 보여줄 겸 그리고 얼마나 좋은 데이터를 갖고 있는지 인지도 시켜줄 겸 가상의 데이터를 이용해 시각화 자료를 한 번 만들어 봤습니다. 마침 유럽 업체와 협업을 하면서 영국지리 정보에 대해 관심을 갖다보니 영국 지역의 접속이력을 fake로 만들어 봤습니다. 이 dummy data를 불러와 이를 불러와 아래와 같이 Pandas DataFrame으로 만들어 봅니다. 위경도 좌표가 있으므로 이를 이용해서 시각화를 해보겠습니다. 지오코딩 정보가 있으니 일단+무조건 folium을 이용하여 지도에 뿌려봅니다. 특정 지역에 이.......
2021-09-07 21:04:00 |
산소소년
Map(folium)에 HeatMap을 표현해보기!
쇼핑몰을 운영하시는 분들은 혹은 물류관련된 업무를 수행하시던 분들에게 본인들이 보유한 데이터를 이런 식으로도 쓸 수 있다라는 것을 보여줄 겸 그리고 얼마나 좋은 데이터를 갖고 있는지 인지도 시켜줄 겸 가상의 데이터를 이용해 시각화 자료를 한 번 만들어 봤습니다. 마침 유럽 업체와 협업을 하면서 영국지리 정보에 대해 관심을 갖다보니 영국 지역의 접속이력을 fake로 만들어 봤습니다. 이 dummy data를 불러와 이를 불러와 아래와 같이 Pandas DataFrame으로 만들어 봅니다. 위경도 좌표가 있으므로 이를 이용해서 시각화를 해보겠습니다. 지오코딩 정보가 있으니 일단+무조건 folium을 이용하여 지도에 뿌려봅니다. 특정 지역에 이.......
2021-09-07 12:04:00 |
산소소년
Map(folium)에 HeatMap을 표현해보기!
쇼핑몰을 운영하시는 분들은 혹은 물류관련된 업무를 수행하시던 분들에게 본인들이 보유한 데이터를 이런 식으로도 쓸 수 있다라는 것을 보여줄 겸 그리고 얼마나 좋은 데이터를 갖고 있는지 인지도 시켜줄 겸 가상의 데이터를 이용해 시각화 자료를 한 번 만들어 봤습니다. 마침 유럽 업체와 협업을 하면서 영국지리 정보에 대해 관심을 갖다보니 영국 지역의 접속이력을 fake로 만들어 봤습니다. 이 dummy data를 불러와 이를 불러와 아래와 같이 Pandas DataFrame으로 만들어 봅니다. 위경도 좌표가 있으므로 이를 이용해서 시각화를 해보겠습니다. 지오코딩 정보가 있으니 일단+무조건 folium을 이용하여 지도에 뿌려봅니다. 특정 지역에 이.......
2021-09-07 12:04:00 |
산소소년