data engineering 93

aws boto3 set ebs tag in auto scaling group ec2

현재 autoscaling group(asg)으로 많은 인스턴스를 만들어 쓰고 있다. 근데 aws를 써보면 알겠지만 asg를 만들때 tag를 설정할수 있는데, 이 설정해놓은 태그가 asg내부의 ec2들에는 동일하게 설정이 된다. 그런데 각각의 ec2가 ebs를 가지고 있는데, 이 ebs 들에는 asg에서 설정한 태그가 붙질 않는다.(aws버그인듯.. 당연히 같이 붙어야하는거 아닌가) aws자원 관리를 위해서 기본적으로 설정해야하는 tag들이 있는데, ebs들은 자동적으로 아무 태그도 들어가지 않으면서 null로 들어감으로써 ebs자원 관리가 되질 않는다는 요청이 왔다.ec2들이 자주 생성되고 삭제되고 하는 구조여서 한번만 수동으로 tag를 설정할게 아니라 매번 자동으로 태그를 설정해줄 스크립트를 짤 필요..

data engineering 2020.11.11

airflow 삽질

몇일전에 spark etl을 제작했고, 이걸 배치잡으로 돌린다는 글을 적었었다. link도커로 하는건 아직 뭐가 문제인지 이유를 못찾았고, 이유를 못찾았다는 이유로 그냥 크론탭에서 계속 돌아가도록 놔둘수 없기에 생각해보다가 airflow에서 돌리기로했다. 처음엔 rancher에서 kubernetes airflow app을 만들어서 거기다가 내 전용으로 따로 올려볼까 하다가 idc에서 돌아가는 airflow서버가 하나 있어서 거기에 올리기로 했다. kubenetes airflow로 올리려다가 만 이유는 dag파일을 커스터마이징하기가 힘들기 때문이다.bitnami의 airflow가 계속 최신에도 업그레이드되고 있어서 이걸 쓰려고 했는데 (bitnami airflow) dag 추가하는부분을 찾아보면 3가지 방..

data engineering 2020.10.20

hadoop echo system의 기반지식 hadoop, zookeeper, yarn등 정리

하둡 에코 시스템을 회사에 들어와서 처음 사용해보는데, 회사에서는 당연히 실질적으로 필요한 지식인 스파크, 카프카 이런것들만 어떻게 설치해서 사용해왔다. 근데 이제 어느정도 여유가 생기니까 기반 지식들이 부족하다 보니 공부해야 할 필요성을 느꼈다.왜 스파크는 하둡 위에서 돌아가는지, 왜 카프카는 주키퍼라는게 필요한지. yarn은 또 뭔지. 마치 c언어로 어떻게 프로그래밍을 하는데 내부에 포인터가 어떻게 어떻게 주소를 참조하는지 등 하나도 모르고 그냥 되니까 코딩하는 느낌이라.. 기반 지식에 대해 공부를 좀 더 하기 위해서 글들을 찾아보고 정리한다. 0. hadoop이란 무엇인가. https://dongvelopment.tistory.com/47, https://rachelsdotcom.tistory.co..

data engineering 2020.10.11

make simple spark docker image

이전 글에서 spark관련 etl을 만들었다. 하루마다 돌려야 하는 배치잡인데 내가 스파크를 설치한 서버에서 크론탭을 걸어서 돌리면 나한테는 가장 편하겠지만 이러면서버에 너무 종속적이다. 스파크가 설치된 idc서버가 교체가 일어난다던지, 하면 스파크를 다시 새로 깔고 jar들을 다운받고 세팅을 다시 처음부터 끝까지 다시 해야 한다. 어쨌든 요즘은 쿠버네티스로 자원 컨트롤링을 하고 도커 쓰는건 대부분 기본인 시대이기에 도커 이미지로 만들어보기로 했다. 처음에 이미 만들어진 도커 이미지를 사용할까 생각했는데 ex) https://hub.docker.com/r/bitnami/spark/ 저번에도 적었지만 스파크 3버전에 하둡 3.2버전을 동시에 충족하는 이미 만들어진 스파크 도커 이미지가 없는것같아서 그냥 처..

data engineering 2020.10.09

spark mongo data processing, write csv to s3 삽질 정리.

https://qkqhxla1.tistory.com/1006 의 mongo부분의 글을 재정리함과 동시에 겪었던 모든 문제들을 적으려고 한다. 하려는 작업의 도식도는 위의 그림과 같다. 몽고디비에서 데이터를 가져와서 스파크에서 전처리를 한다. 그후 전처리된 데이터를 csv형태로 S3에 저장한다. (S3에 저장된 데이터는 하이브 테이블로 만들 예정인데 그건 다른 글에 많이 써놔서 제외한다.) 공용으로 쓰는 spark서버 말고 새로 구축해서 우리꺼 전용으로 사용하려고 내가 구축한 kubernetes rancher서버에 bitnami spark로 아무 버전이나 설치했었는데 이러면 안되었다. 삽질하면서 얻은 중요한 결론을 먼저 적자면 spark는 spark버전과 hadoop버전, 거기에 관련된 jar버전까지 전부..

data engineering 2020.09.21

mongodb set ttl

https://docs.mongodb.com/manual/tutorial/expire-data/ 특정 시간 이후에 데이터를 자동으로 삭제하고 싶을 경우 ttl을 활용한다. mongodb에는 ttl인덱스가 있다.db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } ) When adding documents to the log_events collection, set the createdAt field to the current time:copycopieddb.log_events.insert( { "createdAt": new Date(), "logEvent": 2, "logMessage": "Success!" } )일부 자료..

data engineering 2020.08.15

kubernetes rancher add helm chart catalogs

이전에 적었듯이 kubernetes cli는 배우는데 러닝 커브가 높아서 gui로 kubernetes를 컨트롤 해주는 rancher라는걸 쓰고 있다.(하드하게 쓰는게 아니라 그런지 쓸만하다.)현재 쓰고있는 몇개 앱만 캡쳐 떠왔다. 카프카, 젠킨스 등 이것저것 잘 쓰고 있는데.. 이번에는 스파크를 설치해야 할 일이 생겼다. Apps탭이니 당연히 여기도 스파크가 있을줄 알고 Launch버튼을 눌러 스파크를 찾아봤다. 찾아봤는데 이 4개밖에 안뜬다. 맨 처음 Helm-incubator의 스파크는 deprecated되었다고 하고 선택지가 두번째 Helm spark밖에 없었다. 근데 가장 최신 버전을 설치했는데 스파크 버전이 1.5이다..... helm chart를 들어가봤더니 업데이트가 안된지 상당히 오래되었다..

data engineering 2020.08.03

Vault.

Vault관련 참고 가장 좋았던 블로그 : https://lejewk.github.io/vault-get-started/ Vault란 토큰, 비밀번호, 인증서 ,암호화 키와 같은 비밀 정보나 민감한 데이터를 UI, CLI, HTTP API 를 활용할때 안전하게 저장하고 제어할수 있게 해주는 오픈 소스 입니다. https://learn.hashicorp.com/vault/getting-started/apis https://www.vaultproject.io/api-docs/index 뭔가 더 적고 싶은데 위의 링크나 공식 튜토리얼에 전부 다 설명되어있어서(사용사례까지) 억지로 더 적지 않고 끝냄.

data engineering 2020.07.16

kafka set credentials

https://developer.ibm.com/technologies/messaging/tutorials/kafka-authn-authz/ 를 보고 정리.. 잘 작동한다. broker side. 1. jass파일을 만든다. KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin" user_alice="alice" user_bob="bob" user_charlie="charlie"; }; 이처럼 만들면 사용자가 사용할수 있는 alice, bob, charlie가 추가된다. jass.conf라고 이름짓고 ~/kafka/config안에 저장해놓는다. username=..

data engineering 2020.07.13

jenkins in kubernetes RBAC, configure master, slave node

랜쳐 쿠버네티스에서 젠킨스 앱을 만들어서 젠킨스를 쓰고있다. 최근에 어떠한 이유로 젠킨스를 처음부터 새로 세팅해야 했다. 일반적인 메모리 설정이라던지.. 계정 설정이라던지 등의 일반적인 설정 말고 쿠버네티스와 관련된 설정을 적는다. 1. RBAC. 젠킨스에서 쿠버네티스의 자원에 접근이 필요할 경우 권한이 필요하다.(젠킨스가 쿠버네티스 안에서 설치된거지만 권한 필요.)예로 젠킨스 안에서 kubectl을 설치한 후에 kubectl을 사용해서 자원(pod이라던가.)을 가져오거나 service의 scale을 컨트롤 하는 코드가 있는 경우에 해당한다. 권한이 없는 경우 이런식으로 에러메시지가 뜬다. ----------------------------------------------------------------..

data engineering 2020.06.29

LVM (logical volume manager) 기본 세팅..(aws ec2)

https://youngmind.tistory.com/entry/CentOS-%EA%B0%95%EC%A2%8C-PART-1-8-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EA%B4%80%EB%A6%AC-%E3%85%A3%E3%85%8D 의 사진을 가져옴.(문제있을시 글 비공개로 돌리겠습니다!) 일단 LVM에 관해 적는이유는 aws ec2에 새로 몽고디비를 설치하려고 하는데 환경에 문제가 있어서, aws에서 도커로 몽고를 띄울수가 없다. 그래서 온프레미스같이, idc에 설치하듯이 서버에 직접 설치를 해야하는데, 이 경우 완전 새로 만들어진 ec2는 말 그대로 우분투에 디스크를 새로 꼽은 상태이다. 그래서 이 디스크들을 어쩌구저쩌구 가공해주고 마운트해줘야 우리가 쓸수 있는 환경이 나..

data engineering 2020.06.18

elasticsearch disk full 관련 해결법, 리텐션

es에 데이터를 넣으려고 하는데 u'error': {u'reason': u'blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];', u'type': u'cluster_block_exception'} 요런 메시지가 뜨면서 데이터가 es로 들어가지 않는다. 구글링해보니 https://dev-yeon.tistory.com/12 에서 디스크가 거의 차서 발생하는 에러라고 한다. 디스크가 찼으면.. 인덱스를 좀 지워주면 되겠네? 하고 지우려했더니 read only라고 에러가 뜬다.저 블로그에서 나온것처럼 read only모드를 풀어주자. PUT _all/_settings { "index": { "blocks": { "read_only_allow_del..

data engineering 2020.05.16

How to get temporary credential from ec2 iam role

배경 : 현재 access key와 secret key가 그냥 평문으로 박혀있습니다. 그런데 이게 보안적으로 위험해서 내가 필요한 권한을 가진 iam role을 가진 ec2에서 임시 credential을 가져와서 동작하도록 하고자 합니다. 대충 구성도를 그리면 이렇습니다. 1. 1번 ec2 즉 s3로 업로드할 수 있는 iam role을 가진 ec2를 생성합니다. 권한 가져오기 전용이므로 인스턴스는 가장 작은거로 적당하게 만듭니다. 2. 1번 ec2의 메타데이터를 가져와서 2번 ec2에서 사용해야 합니다. 1번 ec2에 인스턴스 메타데이터 서비스 구성을 해줘야 합니다. aws cli로 아래 구문을 실행해줍니다. instance-id는 1번 ec2의 instance-id로 설정합니다. 참고로 아래 aws콘솔..

data engineering 2020.04.24

데이터 직군 관련 블로그.

데이터 직군 관련해서 기술 스택 등등 너무 깔끔하게 정리해주셔서 링크 걸어놓음. https://github.com/Team-Neighborhood/I-want-to-study-Data-Science/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%95%BC%EC%9D%98-%EC%A7%81%EA%B5%B0-%EC%86%8C%EA%B0%9C 글 하나하나가 유용한게 많습니다. 취준생때는 데이터 직군에 관해서 정말 뭘 해야할지 검색해도 잘 안나오거나 말로만 뭐라뭐라 풀어쓴 글만 있는데 이런 구체적으로 기술 스택 등을 나열해놓은 블로그를 참조하면 좋을듯 싶네요. 실제 제가 하고 있는 업무나 기술스택이 거의 동일합니다.

data engineering 2020.04.22

python get autoscaling group ip list

https://stackoverflow.com/questions/47558854/boto3-to-pull-all-ec2-instances-from-a-given-asg 나중에 보기 위해 코드 저장해둠. 오토 스케일링 그룹 내의 인스턴스 하나하나로 ssh로 들어가야 할 경우가 많은데 오토 스케일링 그룹 내의 인스턴스가 좀 많으면 aws콘솔에서는 하나하나 확인하기가 너무 짜증난다. 다시 들어가서 로딩되는데 시간도 오래걸리고.. 그래서 ip리스트를 받아오는 코드가 있으면 매우 쉽게 해당 ip로 들어갈수 있는 ssh프로그램을 짤 수 있다. # -*- coding: utf-8 -*- import boto3 class AwsManager: def __init__(self): self.access_key = aws ..

data engineering 2020.03.26

fluentd와 elasticsearch, kibana(EFK)를 이용한 haproxy 로그 시각화

현재 우리 프록시 시스템의 아키텍쳐 일부 그림이다. 일부 간단하게 몇개만 그리긴 했지만 haproxy로 들어오는 패킷이 엄청나게 많다. 패킷이 추가로 많이 들어올것 같아서, 이 패킷들이 어디에서 들어와서 어디로 나가는지 모니터링하기위한 시스템을 구축하고자 한다. 시각화 툴은 https://qkqhxla1.tistory.com/1031?category=802922 에서 삽질하면서 구축했던 키바나를 쓰고자 한다. fluentd로 haproxy의 로그를 실시간으로 모아서, 엘라스틱서치로 쏴주고, 그걸 키바나로 시각화하고자 한다. 만들어질 아키텍쳐 예상도는 아래와 같다. 위의 아키텍쳐 예상도를 보면 내가 추가해야할 부분은 fluentd만 오토 스케일링 그룹 내의 인스턴스에 하나씩 설치 후, 엘라스틱서치로 쏘게 ..

data engineering 2020.02.27

aws route53 ~ 쿠버네티스 ingress 흐름관련

처음 aws와 쿠버네티스를 접하면서 누구나 그렇겠지만 이해하기 힘들었던 개념이 로드밸런싱과 라우팅이 어떻게 동작하는가였다. 그러니까 단순하게 로드밸런싱은 부하를 분산해준다.. 그런건 알고있었는데 구체적으로 어떻게 설정해줘야 이게 어떤식으로 로드밸런싱이 되는지, 포트포워딩은 어디에 어떻게 적어줘야 밖에서 내부로 제대로 접속이 되는지 몰랐다.docs를 찾아봐도 이미 어느정도 아는 사람들을(알것같은 사람들을) 대상으로 써서 그런지 잘 이해가 되지 않았다. 테스트도 못해보고 구름위에 둥둥 떠있는 느낌이어서 고생좀 했다. 아래에는 aws route53을 통해서 어떻게 데이터가 들어오는지 그림을 좀 그려보고자 한다. 요즘 이런 개념정리의 필요성을 느낀다. 너무 휙휙 지나가다보니 할줄은 아는데 이게 왜 이런건지 아무..

data engineering 2020.02.22

rancher kubernetes kibana + elasticsearch 설치 삽질 정리.

로깅용으로 elasticsearch + kibana를 띄우려고 한다. 현재 우리서버에 엘라스틱서치서버가 있는데 여기 말고 내가 만들 서비스의 로깅용도로 새로 만들라고 하셔서, 즐거운 마음으로(?) 저 조합으로 띄워 보고자 하였다. 그런데 애초에 엘라스틱서치와 친한 내가 아니어서, 쿠버네티스 설정의 어려움 말고도 엘라스틱서치 설정의 어려움까지 더해져서 진짜 엄청나게 삽질을 했다. 필요없었던 삽질은 정리하고, 유용한 삽질과 얻은것들을 정리해보고자 한다. 처음에는 가장 쉬운 방법으로 접근해보았다. 가장 쉬운 랜쳐에서 App으로 efk라고 불리는 elasticsearch + flunted + kibana조합으로 패키징이 이미 다 되어있어서 클릭만 하면 자동으로 만들어진다. 이거로 만들어보기로 하였다. 그런데 랜..

data engineering 2020.02.18

apache kafka 기본, 삽질 등.

카프카를 처음 다루게 되면서, 겪었던 삽질이나, 삽질하면서 얻었던 것 등의 과정을 올리고자 한다. 그냥 내가 한 삽질을 따라가면서 기본 튜토리얼만 읽었을때와 다르게 어떤 어려움이 있었는지,있을지 짐작하는 용도로 쓰자. 개발자들이 대부분 어떤 기술이나 이런걸 처음 입문하거나 할때, 아마 대부분 기본적으로 데스크탑에 설치해보고, 튜토리얼을 따라하면서 사용법을 익힐것이다. 나도 동일하게 튜토리얼을 보고 회사 맥에 설치해보려다가 계정 권한 문제인지 실행이 잘 되지 않았다.(순수 admin을 내가 갖고있는게 아님.) 요 글에서 적었듯이 우리 팀에서는 쿠버네티스를 편리하게 컨트롤해주는 gui플랫폼인 랜쳐라는걸 쓴다. 랜쳐에서는(쿠버네티스에서는) 매우 편하게 클릭 몇번으로 서비스를 설치하거나 할수 있는데, 로컬에서는..

data engineering 2020.02.04

aws clb, alb, nlb

aws에는 3개의 로드밸런서가 있다. 3개는 classic load balancer, application load balancer, network load balancer이고,(clb, alb, nlb라고 부름) 개념이 모호해서 잘 몰랐던 내용을 정리해보려고 한다. 첫번째 참고 링크 : https://jackiechen.org/2018/01/10/aws-elb-clb-vs-alb-vs-nlb/ 일단 clb이다. clb는 가장 오래된 로드밸런서이며, 현재는 잘 안쓰는 추세라고 한다. 처음엔 clb만 있었다가 alb가 나오고, nlb가 가장 최근에 나왔다고 한다. 위의 링크를 읽어보면 작성자 생각에는 clb로 네트워크와 어플리케이션의 플로우 컨트롤을 다 하려다가 제한된 기능으로 인해 7계층과 4계층에 특화..

data engineering 2020.01.23

rancher kubernetes add aws cluster (infrastructure)

저번에 aws를 처음으로 만지면서 인프라를 구축했었는데 글로 정리할만한 내용이 없었다. 이거 적어볼까? 하면 적을 내용이 그냥 aws gui에서 이거 하는거 찾아서 클릭하면 됨. 이런게 전부여서 저번에 내가 만든 쿠버네티스에 aws cluster를 추가한 내용을 어떻게 만들었는지 적어보겠다. infrastructure라는 단어가 뭔가 거창하다는 무게감을 주는데 주니어인 내가 만든 만큼 복잡한건 없다. aws는 책만보면 아 뭐야 간단하네? 그냥 gui에서 잘 찾아서 만들면 되는구나. 하는데 막상 실제로 해보면 어 뭐지...? 하면서 막힌다. 근데 한번만 해보면 많이 쉬워지니 공부를 위해서는 한번 직접 만들어보는걸 추천함. 우선 만들었던 인프라의 구성도다. 어떤 순서로 어떻게 만들었는지 대략적으로만 적겠다...

data engineering 2020.01.03

Rancher kubernetes 소개.

Rancher는 kubernetes를 gui로 쉽게 컨트롤할수 있는 orchestration툴이다.(https://rancher.com/docs/rancher/v2.x/en/installation/ha/) 랜쳐라는걸 회사 와서 처음 들었는데 계속 쓰다보니 엄청 편하다. 랜쳐 1에서는 단순하게 도커 이미지를 가져와서 서비스 해주는 수준이면, 랜쳐 2.0부터는 쿠버네티스가 들어가서 더 좋아졌다. 쿠버네티스를 공부하려고 튜토리얼이나 책을 보면 cui에서 yml을 만들어서 진행하는데.... 처음 배우기에 러닝 커브가 너무 높다. 이경우 랜쳐를 이용해서 gui로 전반적인 돌아가는 형태를 파악한 후 cui로 가게되면 아 이게 gui에서 뭐 하는 명령어구나. 하는걸 더 머리속으로 매핑하기 쉽다. 물론 gui형태라도 ..

data engineering 2020.01.03

elastic kibana 깨달은점. (data visualization)

키바나는 엘라스틱서치 내의 데이터를 가져와서 시각화를 해주는 도구이다. elk, efk스택 등등이라고 부르는 것들중 하나이고.. 무슨 내용을 적을까 하다가 보면서 깨달은 점을 간단하게 적기로 했다. 키바나의 경우에는 처음에 한번 데이터 넘기고 그 데이터로 그래프 그리면서 개념 이해하는게 너무 어려워서.. 보고 잘 동작하는 코드와 간단한 설명을 적음. (키바나는 얼마 안해봐서 틀린 개념등이 있으면 댓글로 알려주시면 감사하겠습니다.) 우선 엘라스틱 서치가 기본으로 설치되어 있다고 가정한다. 설치는 찾아보면 있으니 따로 안적음. 이후로 엘라스틱 서치로 데이터를 주기적으로 쏠 프로그램을 짠다. 키바나는 엘라스틱 서치의 데이터를 가져와서 시각화하기때문에 엘라스틱 서치로 데이터를 쏴주고, 키바나에서 가져와야 한다...

data engineering 2019.12.26

kubernetes minio 1mb이상 파일 업로드 안되는 문제 해결 프로세스.

1. k8s에서 helm 기본 yml으로 minio를 설치하고 파일을 업로드했는데 작은 크기의 파일들은 업로드가 되었는데1mb이상의 파일들은 아래와 같이 413 에러가 나오면서 업로드가 되지 않았다.2. 구글링을 이리저리 해본 결과 나와 동일한 문제를 겪은 사람이 있다. https://github.com/minio/minio/issues/6255댓글을 보니 nginx를 사용하면 client_max_body_size라는 변수를 설정해주면 된다고 한다. 3. client_max_body_size라는 변수를 설정하는법을 검색하다가 https://github.com/gardener/gardener/issues/188 링크를 발견했다. 근데 client_max_body_size를 설정하려면 실제로 ingress에..

data engineering 2019.08.13

k8s 디버깅 프로세스 참조.

k8s에서 서비스를 하나 배포하면 에러가 날 경우 어디서부터 시작해야하는지 몰랐는데 아래 링크를 보며 따라가니 도움이 되었다. https://www.ibm.com/support/knowledgecenter/en/SSBS6K_3.1.2/troubleshoot/minio_pod_pending.html 예시는 minio를 배포한 경우 에러가 났는데, 어떤 에러가 났는지 어떻게 확인하고 차근차근 해결방안을 찾아가는게잘 정리되어있다... 나처럼 초보라서 뭐부터 건드려야할지 모르겠다면 저 글 하나만으로도 많은 도움이 된다.

data engineering 2019.08.08

docker 동작 기본, 알아둘것

현재 도커에서 아래의 파일들만을 중점으로 사용하고 있다. 동작 방식으로 정리해놓음. 1. docker-compose.yml https://docs.docker.com/compose/overview/ 를 참조한다. yml파일이며 컨테이너적 환경을 정의하기 위해 사용한다. 도커 이미지는 어떤걸 사용할건지, logging은 어쩔건지, 배포는 어떻게 할건지 등등을 정의한다. 2. Dockerfile https://docs.docker.com/engine/reference/builder/ Dockerfile은 어떤 도커 이미지를 만들때(containerization) 기본 실행 환경에 대한 정의를 한다. 예로 FROM ubuntu:18.04 RUN mkdir /go RUN apt-get update && \ ap..

data engineering 2019.06.14

mysql partitioning, index

mysql에서 파티셔닝이과 인덱스는 둘다 querying속도를 빠르게 만들어줍니다. mysql 테이블을 튜닝? 할 일이 생겼는데 파티셔닝이나 인덱스를 걸어서 속도를 올려야 했습니다. 근데 사실 이 두개가 속도를 빠르게 한다는건 알고있었지만 어떤점이 다른지 궁금해서 이것저것 찾아보다 좋은 글을 가져와서 정리합니다.. 가장 유용했던 답변은 https://blog.naver.com/hykzephyr/221463212941 에서 찾을수 있었습니다.글 내용이 너무 좋아서 블로그에서 퍼왔습니다. 문제가 되거나 퍼온게 마음에 안드실 경우 댓글로 적어주시면 글 내리도록 하겠습니다. 파티션이란 MySQL 서버의 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 여전히 하나의 테이블로 읽기와 쓰기를..

data engineering 2019.06.08

mysql join.

종종 헷갈려서 적어놓음. http://www.mysqltutorial.org/mysql-join/ 정리. INSERT INTO t1(id, pattern) VALUES(1,'Divot'), (2,'Brick'), (3,'Grid'); INSERT INTO t2(id, pattern) VALUES('A','Brick'), ('B','Grid'), ('C','Diamond'); 예시를 들 테이블은 이런 구조. 1. cross join. 두 모든 테이블의 결과를 cross로 가져옴. N * N의 컬럼 갯수가 나옴. SELECT t1.id, t2.id FROM t1 CROSS JOIN t2; 2. inner join. 두 모든 테이블의 결과중 교집합만 가져옴. SELECT t1.id, t2.id FROM t1 ..

data engineering 2019.06.01