분류 전체보기 1187

[Superset/Helm] Chart 시각화 중 Timeout이 발생하는 경우

현상 AWS EKS 클러스터에서 Helm으로 Superset을 설치해서 사용하고 있다. 그런데 Superset Dashboard에서 데이터 양이 많은 Chart를 조회하면 60초 정도 로드하다가 Timeout이 발생하면서 실패하는 현상이 발생하고 있다. 원인을 확인하고 현상을 해결해보자. 원인 다행히 비슷한 현상을 겪는 사용자가 많은지 Apache Superset FAQ 문서에 관련 내용이 정리되어 있었다. 공식 문서에 의하면 Superset 서비스 간 통신이 Gateway나 nginx 같은 Proxy 서버를 통해 이뤄지는 경우, 네트워크 서비스 관련 설정으로 인해 대시보드나 차트를 로드하는 중 504 Gateway Time-out과 같은 시간 초과가 발생할 수 있다고 한다. 긴 쿼리를 처리하는 Supe..

Apache Superset 2024.03.20

[Pandas] AWS S3에서의 parquet 파일 다루기

개요 2024.03.18 - [Pandas] parquet 파일 읽고 쓰기에서 일반 로컬 파일 시스템에서 parquet 파일을 읽거나 써보았다. 근데 공식 문서를 확인해 보면 read_parquet, to_parquet 함수 호출 시 storage_options 매개변수를 통해 AWS S3 등의 외부 저장소를 사용할 수 있는 것 같다. 이번 글에서는 Pandas를 사용해 AWS S3에 저장된 parquet 데이터를 읽거나 쓰는 방법에 대해 정리한다. 필요 라이브러리 설치 fsspec은 로컬, 원격, 임베디드 파일 시스템, 그리고 바이트 스토리지와 연동하는 인터페이스를 제공하는 라이브러리다. 그리고 s3fs는 s3 관련 python 파일 시스템 인터페이스를 제공한다. Pandas에서 두 패키지 모두 AWS..

[Pandas] parquet 파일 읽고 쓰기

개요 2024.03.13 - [Apache Arrow] parquet 파일 읽고 쓰기, 2024.03.14 - [Arrow] 파티셔닝한 parquet 파일 저장하기에서 Apache Arrow를 이용해 parquet 데이터를 읽고 쓰는 방법을 적어두었었는데, Pandas를 통해서 parquet 데이터를 읽고 쓸 수도 있다. 이 글에서는 Pandas를 이용한 방법을 적어둔다. read_parquet read_parquet 함수는 경로에 저장된 parquet 파일을 읽은 DataFrame을 반환한다. import pandas as pd pd.read_parquet('iris.parquet') 단일 파일 하나만 전달하거나, 여러 파일이 파티셔닝되어 저장된 경로를 전달해도 된다. 가령 iris란 경로에 parqu..

[Arrow] S3FileSystem - AWS S3에서의 parquet 파일 다루기

개요 2024.03.13 - [Apache Arrow] parquet 파일 읽고 쓰기, 2024.03.14 - [Arrow] 파티셔닝한 parquet 파일 저장하기에서 pyarrow로 parquet 파일을 간단히 다뤄보았다. 다만 보통 로컬 파일 시스템 대신 AWS s3와 같은 외부 스토리지를 많이 사용하는 것 같다. 따라서 이번 글에서는 AWS S3에 저장된 parquet 파일을 읽거나 쓰는 방법을 적어둔다. S3에 접근하기 위해 필요한 권한 등은 이미 준비가 되어 있다고 가정한다. S3FileSystem Arrow는 여러 스토리지 타입에 대한 추상 파일 시스템 인터페이스 구현을 제공한다. 파일 시스템 인터페이스는 디렉터리 작업뿐만 아니라 입출력 스트림을 제공하고, 기본 데이터 저장소를 단순한 형태로 ..

Python 2024.03.15

[Arrow] 파티셔닝한 parquet 파일 저장하기

개요 2024.03.13 - [Apache Arrow] parquet 파일 읽고 쓰기에서 Python으로 parquet 파일을 읽고 쓰는 방법을 간단히 정리했는데, 데이터를 파티셔닝 해서 저장할 필요가 있어 추가로 정리한다. 파티셔닝 Apache Arrow는 로컬, AWS S3, HDFS 등의 파일 시스템에 파티셔닝 데이터를 읽거나 쓸 수 있다. 기본적으로는 로컬 파일 시스템을 사용한다. 데이터를 쓸 때는 pyarrow.parquet.wrirte_to_dataset 함수에 파일로 저장할 테이블, 파일을 저장할 기본 경로, 그리고 파티셔닝 할 컬럼을 지정한다. pq.write_to_dataset(table, root_path='dataset_name', partition_cols=['one', 'two']..

Python 2024.03.14

[Apache Arrow] parquet 파일 읽고 쓰기

Apache Arrow Apache Arriow는 컬럼 형식의 데이터를 처리하는 데이터 분석 애플리케이션을 개발하기 위한 프레임워크다. Apache Parquet, Apache Spark, Numpy, Pandas 등의 데이터 처리 라이브러리와 함께 사용할 수 있는데, 이 글에서는 Arrow를 사용해 Parquet 파일을 다루는 방법을 간단히 정리하려고 한다. 설치 Python에서 Apache Arrow를 사용할 때는 pip나 conda를 사용해 pyarrow라는 이름의 라이브러리를 설치해야 한다. pip install pyarrow 참고로 2024-02-16일 기준 최신 버전인 Apache Arrow 15.0에서는 Numpy 1.16.6 이상의 버전을 요구하고, Pandas를 사용한다면 1.0 이상의 ..

Python 2024.03.13

[parquet-tools] parquet 파일 조회

parquet-tools parquet 파일은 csv나 json 마냥 메모장 같은 편집기로 열어도 그 내용이 제대로 보이지 않는다. 따라서 parquet 파일을 다룰 수 있는 별도의 유틸리티를 사용하게 되는데, 이 글에서는 여러 parquet 유틸리티 중 parquet 파일의 데이터와 메타데이터를 읽을 수 있는 도구인 parquet-tools를 사용하는 방법을 적어둔다. 참고로 Apache에서 공식적으로 제공하는 parquet-tools는 아니다! 간단히 pip로 설치할 수 있는 도구를 사용하려고 한다. 테스트할 parquet 파일은 https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page 에서 다운로드했다. 설치 parquet-tools는 pip로 설..

Hadoop EcoSystem 2024.03.12

Apache Parquet 이란 - 2

개요 2024.03.08 - Apache Parquet 이란 - 1에 이어서 parquet 파일에 대한 개념을 계속 정리한다. 메타데이터 parquet 파일에는 파일 메타데이터, 컬럼 메타데이터, 페이지 헤더 메타데이터가 존재한다. 데이터 타입 파일 포맷에서 지원하는 데이터 타입은 디스크에 미치는 영향을 최소화하도록 설계되었으며, 지원하고 있는 데이터 타입은 아래와 같다. BOOLEAN: 1 bit boolean INT32: 32 bit signed ints INT64: 64 bit signed ints INT96: 96 bit signed ints FLOAT: IEEE 32-bit floating point values DOUBLE: IEEE 64-bit floating point values BYTE..

Hadoop EcoSystem 2024.03.11

Apache Parquet 이란 - 1

개요 빅데이터 관련 프로젝트를 하다보면 json, csv 등 외의 parquet 형식의 파일을 다루게 되는데, 이번 글에서는 parquet 파일에 대해서 간단히 정리해두려고 한다. 참고로 parquet은 파케이라고 발음한다. Apache Parquet Apache Parquet이란 Hadoop 에코 시스템에서 공통적으로 사용할 수 있는 컬럼 기반 데이터 압축 형식을 말한다. 복잡하게 중첩된 데이터 구조를 위해 개발되었고, Dremel의 논문에서 작성된 record shredding and assembly algorithm을 사용한다. 또한 열(컬럼) 기반으로 데이터를 압축하여 효율적인 압축 및 인코딩을 지원한다. 관련 개념 Block (HDFS block) HDFS에서의 블록을 의미한다. File 파일의..

Hadoop EcoSystem 2024.03.08

[Shell] 변수 기본값 설정

개요 쉘 스크립트에서 변수를 초기화화하면 환경변수 등으로 설정된 값을 사용하거나 그렇지 않은 경우가 존재할 수 있다. 때문에 쉡 스크립트에서 변수를 초기화할 때 기본값을 설정하는 방법을 제공해주고 있다. 이 글에서는 변수 선언 시 기본값을 설정하는 방법에 대해 적어둔다. 변수의 상태 쉘 스크립트에서 변수의 상태는 크게 세 가지로 구분할 수 있다. 선언된 변수 값이 NULL이 아닌 변수 값이 NULL인 변수 선언되지 않은 변수 쉘 스크립트는 변수의 상태와 사용한 확장자에 따라 기본값으로 초기화되는 조건이 달라질 수 있다. - / = 참조하는 변수가 선언되지 않은 경우에는 -, :, = 등의 확장자를 사용하여 변수의 기본값을 초기화한다. 확장자 설명 ${VAR-value} VAR이 선언되지 않은 경우, va..

Linux/Shell Script 2024.03.07