본문 바로가기

Data Engineering

(10)
FutureWarning: 데이터프레임 행 subset 얻기 Python pandas.DataFrame 각 row의 Subset을 얻기 위해서(doc_data) 아래와 같이 코드를 작성했다.for i, row in my_df.iterrows(): doc_names = {"key_example1", "key_example2", "key_example3"} doc_data = {key:row[key] for key in row.keys() & doc_names} doc_dict = {"doc": doc_data} 그랬더니 아래와 같은 경고 문구가 떴다.FutureWarning: Index.__and__ operating as a set operation is deprecated, in the future this will be a logical ope..
파이썬은 모든 것이 객체다, is와 이항 연산자... 파이썬은 모든 것이 객체다.이 중에서 크게 불변 객체(immutable object)와 가변 객체(mutable object)로 구분할 수 있따.클래스설명불변 객체bool부울Oint정수Ofloat실수Olist리스트Xtuple리스트와 튜플의 차이는 불변 여부이며 이외에는 거의 동일하다. 튜플은 불변이므로 생성할 때 설정한 값은 변경할 수 없다.Ostr문자Oset중복된 값을 갖지 않는 집합 자료형Xdict딕셔너리X 불변 객체무엇보다 파이썬은 모든 것이 객체다. 파이썬에서 변수를 할당하는 작업은 해당 객체에 대해 참조를 한다는 의미다.여기에는 예외가 없으며 심지어 문자와 숫자도 모두 객체다.10a = 10b = aid(10), id(a), id(b)# (4393858752, 4393858752, 4393858..
uuid 식별자로 사용가능한가? uuid(universal unique identifier):실제 용도에서 안전하게 고유하다고 생각할 수 잇는 특정 형태의 식별자 정확하게 생성된 두 uuid는 서로 다른 당사자에 의해 두 개의 서로 다른 환경에서 작성된 경우에도 정확히 동일할 가능성이 거의 없다. 실제 uuid는 표준화된 형식에 의해 생성되고 표현되는 고유 식별자이다. 유효한 uuid는 RFC 4122에 의해 정의된다. 이 사양은 중앙 발급 기관 없이도 여러 구현 간에 고유성을 유지하는 데 사용할 수 있는 알고리즘을 설명한다. RFC에는 다음과 같은 다섯가지 다른 알고리즘이 포함되어 있고, 각 알고리즘은 값을 생성하기 위해 서로 다른 메커니즘을 사용한다.  uuid 버전요약설명버전1시간 기준타임 스탬프, 클럭 시퀀스 및 생성 장치별 값..
Python 딕셔너리 파이썬의 딕셔너리는 키/값 구조로 이루어진 딕셔너리를 말한다.3.7+ 부터는 입력 순서가 유지되며, 내부적으로 해시 테이블로 구현되어 있다. 언어해시 테이블파이썬dict()C++std:unordered_map자바HashMap 해싱파이썬의 딕셔너리는 해시할 수만 있다면 숫자 뿐만 아니라, 문자, 집합까지 불변 객체를 모두 키로 사용할 수 있다. 이 과정을 해싱이라고 하며, 해시 테이블을 이용해 자료를 저장한다. 무엇보다 해시 테이블은 다양한 타입을 키로 지원하면서도 입력과 조회 모두 O(1)에 가능하다. 분할 상환 분석(Amortized Analysis)에 따른 시간 복잡도는 O(1)이다. 이외에 해시 테이블의 주요 연산과 시간 복잡도는 아래와 같다.연산시간 복잡도설명len(a)O(1)요소의 개수를 리턴한..
리스트, 배열과 연결 리스트를 통합하고 속도는 양보한 파이썬의 객체 타입 파이썬의 리스트는 말 그대로 순서대로 저장하는 시퀀스이자 변경 가능한 목록을 말한다.입력 순서가 유지되며, 내부적으로는 동적 배열로 구현되어 있다. 각 언어 별 동적 배열을 구현한 자료형은 아래와 같다.언어동적 배열파이썬list()c++std::vector자바ArrayList 리스트의 주요 연산과 시간 복잡도리스트는 다양한 기능을 제공하면서도 O(1)에 실행 가능한 연산들도 있다.연산시간 복잡도설명len(a)O(1)전체 요소의 개수를 리턴한다.a[i]O(1)인덱스의 i 번째 요소를 가져온다.a[i:j]O(k)인덱스 i 번째부터 j-1 번째 까지의 슬라이스 길이만큼의 k개의 요소를 가져온다. 이 경우 객체 k에 대한 조회가 필요하므로 O(k)이다.elem in aO(n)elem 요소가 존재하는지 확인한다...
Kafka에 대한 간단한 아키텍쳐 소개 Kafka는 대규모 메세지를 빠르게 처리할 수 있는 분산 스트리밍 메시징 플랫폼이다.   Apache Kafka는 수천개의 기업에서 분산 이벤트 스트리밍 플랫폼으로 사용되는 오픈소스이다. 고성능의 데이터 파이프라인 구축, 스트리밍 분석, 데이터 통합, 적용 등을 위해 사용될 수 있고, 클러스터링 되어 있기 때문에 안정적인 아키텍쳐를 갖고 있고 확장성도 용이하다. Kafka 에코시스템 기본 구성 요소와 동작 - 발행-구독(publish-subscribe) 모델- 크게 producer, consumer, broker로 구성됨Kafka의 broker는 topic을 기준으로 메시지를 관리한다. Kafka의 Producer는 특정 topic의 메시지를 생성한 뒤 해당 메시지를 broker에 전달한다. Broker..
AWS ECS에 대한 이해 개념Amazon ECS Anywhere는 고객 관리형 인프라에서 손쉽게 실행할 수 있는 아마존 웹 서비스의 컨테이너이다. ECS는 Elastic Container Service의 줄임말이다. LG전자에서도 전사 차원에서 AWS를 계약하고 사용하고 있는 것으로 알고 있다.  ECS Anywhere는 Amazon ECS의 단순성과 사용 용이성에 기반하여 컨테이너 기반 애플리케이션에서 일관된 도구 및 API 경험을 제공한다. 온프레미스 또는 클라우드 모두에서 Amazon ECS에서 확인하려는 유사한 클러스터 관리, 워크로드 예약 및 모니터링을 이용할 수 있다. ECS Anywhere가 제공하는 완전관리형 솔루션의 장점을 활용하여 복잡한 로컬 컨테이너 오케스트레이션을 완화하고 비용을 절감할 수 있다 ECS An..
Python 라이브러리를 활용한 Azure Blob 파일 획득 예제 Python 라이브러리를 활용해서 Azure Blob 스토리지의 Blob 파일을 획득하는 예제를 진행해보겠다. 이를 위해 azure-storage-blob 이라는 이름의 패키지를 설치한다. pip install azure-storage-blob사용할 때에는 azure.storage.blob으로 임포트한다. 단, 패키지 사이즈가 크므로 사용할 라이브러리만 이름으로 임포트하여 사용하는 것을 추천한다.from azure.storage.blob import * 1. MS Azure Blob File 획득1-1. MS Azure Blob File 이름 리스트 획득컨테이너 하위의 blob 파일 리스트에 대한 정보는 Python azure-storage-blob의 BlobServiceClient 클래스가 지원한다. ..
Azure Blob 스토리지에 대한 이해 클라우드 제품이 MS Azure 클라우드 기반으로 만들어진 많은 경우, 비용적인 측면과 사용에의 편리함 때문에 데이터 레이크로 Blob 스토리지를 사용할  가능성이 매우 높다. 본인 역시 회사에서 운영 중인 클라우드 제품 일부가 Azure 기반으로 설계되어, 데이터 파이프라인 구축할 때 Azure에 대한 이해가 필수적으로 필요했다. 예전에 정리해둔 내용을 공개해본다.. 1. MS Azure Blob Storage  Azure Blob Storage는 클라우드를 위한 Microsoft의 개체 스토리지 솔루션이다. Blob Storage는 대량의 비정형 데이터를 저장하도록 최적화되어 있다. 비정형 데이터는 텍스트 또는 이진 데이터와 같은 특정 데이터 모델이나 정의를 따르지 않는 데이터이다.사용자 또는 클라이..
도커(Docker)란 도커(Docker)는 컨테이너화된 응용 프로그램을 개발, 배포 및 실행하기 위한 오픈 소스 플랫폼입니다. 컨테이너는 소프트웨어의 실행을 위한 격리된 환경을 제공하는 기술로, 응용 프로그램을 독립적으로 실행할 수 있게 해줍니다. 도커는 이러한 컨테이너 기술을 이용하여 개발자들이 손쉽게 응용 프로그램을 패키지화하고 배포할 수 있도록 지원합니다.도커의 주요 특징은 다음과 같습니다.1. 컨테이너화: 도커는 응용 프로그램과 해당 종속성을 격리된 환경인 컨테이너에 패키지화합니다. 이를 통해 응용 프로그램이 호스트 환경과 독립적으로 실행되며, 개발 및 배포가 단순화됩니다.2. 표준화된 환경: 도커는 컨테이너를 통해 응용 프로그램의 실행 환경을 표준화하여 호스트 환경에 관계없이 일관된 실행 환경을 제공합니다. 이는 응..