[AWS] RDS(MYSQL)에서 DMS를 사용하여 Databricks로 Migration하기
·
데이터 엔지니어링/AWS
데이터의 변경된 내용을 자동으로 식별하기 위해서 Change Data Capture(CDC)의 기술을 접목할 것이다. 데이터 브릭스로 CDC를 진행할때는 어떤 방식으로 이루어지는 알아보자. 사용한 서비스 : AWS의 DMS, AWS RDS(MYSQL),Databricks(Spark) 1. RDS 생성 DB는 Mysql을 생성해서 사용했다. 비용효율적으로 EC2에 mysql을 설치해서 사용해도 되지만, RDS를 사용해본 적이 없기에, CDC를 통해서 겸사겸사 진행했다. 또한 프리티어를 사용해서 Amazon RDS 단일 AZ(개발자용) db.t2 micro 인스턴스는 750시간 무료로 사용할 수 있다고 하니 클라우드 환경에서 DB를 사용할때 생성하면 좋을 듯 싶다. 주의 : 버스터블 클래스인 t로 선택을 ..
[AWS] EC2(ubuntu)에서 postgreSQL 설치하기
·
데이터 엔지니어링/AWS
다음 프로젝트에서 쓰이고 있는 DB가 PostgreSQL이라고 해서 EC2 우분투에 postgresql을 설치했던 경험을 정리하였습니다. 개발 환경 - Ubuntu 22.04.2 LTS ver - Postgresql 14 ver 설치 $ sudo apt-get update $ sudo apt-get install postgresql postgresql-contrib # 패키지 등록 sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list. d/pgdg.list' # GPG Key add wget --quiet -O - https://www.postgresq..
[AWS] Claude2 token counting
·
데이터 엔지니어링/AWS
Langchain의 callbacks으로 묶으려고 하니까 OpenAI의 자연어 처리 API를 사용하는 것으로 확인이 되어 token을 count할 수 없었다 현재 사용하고 있는 llm은 aws의 claude2기 때문에, open ai와 맞지 않아 구글링 해본 결과 여러 개를 테스트해볼 수 있었다 1토큰 당 처리되는 글자가 언어에 따라 달라진다는 점. 영어의 경우 4글자당 1개 토큰을 사용하는 반면 한글은 1글자당 2~3개의 토큰을 사용한다. 챗GPT 최대 입력 글자 수로 계산했을 때 영어는 1만 5384자이나 한글은 1365자에 불과하다라고 한다. callback을 시도하려했으나 오류발생 ImportError: cannot import name 'ChainManagerMixin' from 'langcha..
[AWS] Boto3로 S3 연결
·
데이터 엔지니어링/AWS
Boto3를 이용해서 S3 객체와 연동하여 데이터를 적재할 때 업로드를 직접하지 않아도 됨 import pandas as pd import warnings import boto3 import io from io import BytesIO import json warnings.filterwarnings("ignore") def s3_read(s3_path): s3 = boto3.client('s3',region_name='ap-northeast-2') bucket = s3_path.split('//')[1].split('/')[0] file_key = '/'.join(s3_path.split('/')[3:]) response = s3.get_object(Bucket=bucket, Key=file_key) ..
[ELK스택] Elastic Search (3)
·
데이터 엔지니어링/AWS
Metric Aggregation 산술 aggregation { "size" : 0, "aggs" : { "stats_score" : { "stats" : { "field" : "points" } } } } curl -XGET -H'Content-Type: application/json' localhost:9200/_search?pretty --data-binary @avg_points_aggs.json AVG(평균) MAX (최대값) status : count/ min / max / avg / sum => aggregation이 다 나올 수 있는 코드 Bucket aggregation SQL Group by와 같음 { "size" : 0, "aggs" : { "team_stats" : { "terms"..
[ELK스택] Elastic Search (2)
·
데이터 엔지니어링/AWS
Elastic Search (1) 에서 json file로부터 document를 생성했기 때문에 아래의 코드 실행시 에러 발생함 curl -XPOST http://localhost:9200/classes/class/1/_update -d ' {"doc" : {"unit":1}}' Elasticsearch 6.0 이후 버전에 도입된 엄격한 content-type 확인으로 인해서 아래의 코드가 추가되어야함 curl -XPOST http://localhost:9200/classes/class/1/_update?pretty -H'Content-Type: application/json' -d' { "doc" : {"unit" : 4} } ' unit 4로 변경 확인 Update One Field With Scri..
[ELK스택] Elastic Search (1)
·
데이터 엔지니어링/AWS
Elastic Search 모든 데이터를 JSON의 도큐먼트 형식으로 입력 및 관리를 할 수 있으며, 문자, 숫자, 날짜, IP주소 등 다양한 타입을 사용할 수 있는 검색 및 분석 엔진이다. Elastic Search는 Rest API를 사용해서 데이터를 조회하고 수정하고 삽입, 삭제가 가능 Elastic Search Relational DB CRUD GET Select Read PUT Update Update POST Insert Create DELETE Delete Delete Elastic Search Relational DB Index Database Type Table Document Raw Field Column ubuntu elastic search install Update 후 새 Repo..
[AWS] S3 to RDS
·
데이터 엔지니어링/AWS
PostgreSQL DB RDS로 Amazon S3 데이터 가져오기 Amazon S3를 RDS for PostgreSQL DB 인스턴스와 함께 사용하려면 먼저 aws_s3 확장을 설치해야함 RDS ⇒ RDB (row 기반) S3 ⇒ parquet (columns 기반) 정책 생성 ```sql aws iam create-policy ^ --policy-name rds-s3-import-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3..