//삭제
~ rm -rf ~/.oh-my-zsh
~ rm ~/.zshrc
~ cp ~/.zshrc.pre-oh-my-zsh ~/.zshrc
~ source ~/.zshrc


//재설치
~ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Cloudkarafka


클라우드에서 관리되는 apache kafka 서버로, 카프카의 설정, 실행 및 확장 등을 자동화시킨 서비스를 제공한다.

 

cloud에 대한 자세한 내용은 아래 아파치 카프카의 공식 홈페이지에서 확인할 수 있다.

https://www.cloudkarafka.com/docs/index.html

 

Documentation - CloudKarafka, Apache Kafka Message streaming as a Service

Documentation Getting started CloudKarafka are managed Apache Kafka servers in the cloud. Kafka is a distributed publish-subscribe messaging systems that is designed to be fast, scalable, and durable. It's an open-source message broker written in Scala and

www.cloudkarafka.com

 

 

 

cloudkarafka getting start - python


툴은 Visual Studio를 사용

 

1. 원하는 디렉터리 경로에서 아래 명령어를 입력

git clone https://github.com/CloudKarafka/python-kafka-example.git

 

 

2. visual studio에서 해당 프로젝트 오픈

 

 

3. 환경변수 설정을 위해서 cloudkarafka의 왼쪽 메뉴바의 [Detail] 클릭

Connection details의 Download를 클릭하여 instance 정보가 담긴 txt 파일을 다운로드

txt 파일 내용

 

 

4. 3번의 txt파일의 정보를 가지고, 터미널로 환경변수 설정

~ export CLOUDKARAFKA_BROKERS="rocket-01.srvs.cloudkafka.com:9094,rocket-02.srvs.cloudkafka.com:9094,rocket-03.srvs.cloudkafka.com:9094"
~ export CLOUDKARAFKA_USERNAME="it5v25et"
~ export CLOUDKARAFKA_PASSWORD="xDjmU_mpuzRcoux8pjFkPJAmgutBU0ar"
~ export CLOUDKARAFKA_TOPIC="it5v25et-testTopic"

// TOPIC은 "username-내가정한인스턴스이름"

 

 

5. 환경변수 설정을 끝내고 터미널로 consumer.py 실행

~ python consumer.py

 

 

6. 또 다른 Terminal을 열고 producer.py 실행

~ python producer.py

 

 

7. cloudkarafka에서 producer에서 메시지 적재

 

메시지 적재가 된 것을 Terminal에서 확인할 수 있다.

 

터미널 화면

 

'Database > Kafka' 카테고리의 다른 글

Kafka message(data) 보관주기 설정  (0) 2020.07.30
Kafka QuickStart  (0) 2020.07.30
centOS 8에 Kafka 설치  (0) 2020.07.28
[MacOS] Cloudkarafka로 kafka 맛보기  (1) 2020.07.24

 

Cloudkarafka


귀여운 오리

클라우드에서 관리되는 apache kafka 서버로, 카프카의 설정, 실행 및 확장 등을 자동화시킨 서비스를 제공한다.

 

cloud에 대한 자세한 내용은 아래 아파치 카프카의 공식 홈페이지에서 확인할 수 있다.

https://www.cloudkarafka.com/docs/index.html

 

Documentation - CloudKarafka, Apache Kafka Message streaming as a Service

Documentation Getting started CloudKarafka are managed Apache Kafka servers in the cloud. Kafka is a distributed publish-subscribe messaging systems that is designed to be fast, scalable, and durable. It's an open-source message broker written in Scala and

www.cloudkarafka.com

 

 

 

Cloudkarafka 시작하기


1. 홈페이지에 접속한 뒤 초록색 버튼 클릭 - https://www.cloudkarafka.com/ 

 

 

2. 이 포스팅에서 사용할 것은 이 귀여운 DEVELOPER DUCK! 

[Try a Developer Duck]을 클릭 -> 회원가입 진행 -> 로그인

 

 

3. 로그인하면 아래와 같은 창이 보이고, Name에는 자신이 원하는 Instance 이름을 입력 -> [Select Region] 클릭

(위의 노란색 알림은 무시해도 상관 없음)

 

 

4. data 센터의 위치 선택 -> [review] 클릭

버지니아는 에러나서 EU-WEST-1로 선택

 

 

5. [create instance] 클릭

 

 

6. instance가 생성된 것을 확인 (testinstance)

 

 

7. 방금 만든 인스턴스를 클릭하면 아래와 같이 정보를 확인할 수 있다. 

 

 

 

Consumer & Producer 사용해보기 (message 적재)


이번 포스팅은 producer를 이용해서 메세지를 적재하고, consumer가 소비하는 것을 확인하는 것이 목표!!

 

1. 왼쪽 메뉴바의 [TOPICS]를 클릭하여 토픽에 대한 정보를 입력 -> [create] 클릭

(간단한 테스트만 진행할 것이기 때문에, partitions와 replicas를 모두 1로 정함)

 

 

2. 왼쪽 메뉴바의 [BROWSER] 클릭 -> topic name을 Consumer, Producer에 입력

 

 

 

3. Producer 에 적재하고 싶은 Message를 작성하여 [Produce] 클릭하면 Consumer에서 확인할 수 있다

 

4. [Consume] 클릭하면 메세지를 소비

소비하기 전
소비 후

 

 

 

'Database > Kafka' 카테고리의 다른 글

Kafka message(data) 보관주기 설정  (0) 2020.07.30
Kafka QuickStart  (0) 2020.07.30
centOS 8에 Kafka 설치  (0) 2020.07.28
[MacOS] Cloudkarafka와 python를 연동해서 메세지 전송하기  (0) 2020.07.25

 

1. 먼저, apache-druid 0.19.0 파일을 아래 링크에서 다운로드

https://www.apache.org/dyn/closer.cgi?path=/druid/0.19.0/apache-druid-0.19.0-bin.tar.gz

 

Apache Download Mirrors

Copyright © 2019 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.

www.apache.org

 

2. 파일을 다운로드받은 경로에서 terminal에 아래 명령어 입력

tar -xzf apache-druid-0.19.0-bin.tar.gz	//압축해제
cd apache-druid-0.19.0

압축해제 후 폴더로 이동

 

 

3. 퀵스타트 명령어 입력

./bin/start-micro-quickstart

error

명령어를 입력했더니 Druid는 Java8만 지원하니 설치하고 재시도하라는 메세지 출력

-> 괜히 무시했다가 나중에 탈나느니 아예 8로 맞춰주기로.. (방법은 더보기 클릭)

 

더보기

Java8 설치는 여기 -> https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

 

java8 설치가 성공해도 여전히 컴퓨터는 java의 최신버전을 쓰기 때문에 변경을 해줘야 함

 

~ java -version				//현재 자바 버전 확인
~ /usr/libexec/java_home -V		//설치된 자바 버전 모두 확인
~ sudo vi ~/.zshrc			//비밀번호 입력

 

~ source ~/.zshrc	//수정한 파일 적용
~ java -version 	//버전 변경 되었는지 확인
변경 완료 화면

 

정상작동 스크린샷

 

Druid 종료는 control + c 

 

4. 이 주소에 접속했을 때 아래와 같은 화면이 출력되면 성공 

http://localhost:8888/

 

 


 

이 포스팅은 드루이드의 퀵스타트를 보고 따라하며 작성하였습니다.

 

https://druid.apache.org/docs/latest/tutorials/index.html

 

Quickstart · Apache Druid

 

 

 

SUBQUERY(서브쿼리)

대표적으로는 SELECT, FROM, WHERE절에서 사용 가능

이번 포스팅에서는 FROM, WHERE에 대한 서브쿼리를 소개할 예정입니다.

 

 


 

incident_id week date type ...
3001 2 2020-01-05 A  
3002 2 2020-01-05 A  
3003 2 2020-01-06 B  
3004 2 2020-01-07 B  
3005 2 2020-01-07 ...  
3006 2 2020-01-07 ...  

table <crimes>

 

FROM절 서브쿼리

 

FROM절 서브쿼리 작성 예시) 가상의 테이블을 만든다고 생각

 

SELECT daily_stats.week
		,AVG(daily_stats.incidents_daily)
FROM (
	SELECT week
    		,date
	        ,COUNT(incident_id) AS incidents_daily
	FROM crimes
    	GROUP BY week, date
    ) daily_stats
GROUP BY daily_stats.week

AVG() 사용할 때, NULL 카운트가 안 되는 점을 고려해서 SQL문을 작성해야 함

 

 

 

WHERE절 서브쿼리

 

서브쿼리의 결과가 딱 하나일 경우 (주로 MIN, MAX 사용)

SELECT *
FROM crimes
WHERE date = (SELECT MIN(date) FROM crimes)

 

서브쿼리의 결과가 여러 개인 경우

SELECT *
FROM crimes
WHERE date IN (SELECT DISTINCT date
		FROM crimes
                ORDER BY date DESC
                LIMIT 5
                )

 

 

 


 

HACKER RANK

 

Top Earners - https://www.hackerrank.com/challenges/earnings-of-employees/problem?h_r=internal-search

문제 풀이는 더보기 클릭

더보기

문제 ) salary * months 의 결과값 중에 가장 큰 값을 몇 명이 받고 있는지 조회해라

 

1) WHERE절 서브쿼리에서 WHERE = 를 사용한 풀이

-- salary * months = earnings 값이 제일 큰 사람

SELECT months * salary AS earnings
	, count(employee_id)
FROM Employee
WHERE months * salary = (SELECT MAX(months * salary) FROM employee)
GROUP BY earnings

 

2) HAVING절 서브쿼리를 사용한 풀이

SELECT months * salary AS earnings
	,COUNT(*)
FROM Employee
GROUP BY earnings
HAVING earnings = (SELECT MAX(months * salary) FROM Employee)

 

 

LEETCODE

 

184. Department Highest Salary - https://leetcode.com/problems/department-highest-salary/

문제 풀이는 더보기 클릭

더보기
SELECT d.name AS department
    , e.name AS employee
    , e.salary
FROM employee AS e
    INNER JOIN (SELECT departmentid
			, MAX(salary) AS max_salary
                FROM employee
                GROUP BY departmentid
                ) AS dh ON e.departmentid = dh.departmentid
                	AND e.salary = dh.max_salary
    INNER JOIN department AS d ON d.id = e.departmentid

 

해설은 차후 업로드

 

 


 

< 기초 SQL 시리즈 >

 

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 1부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 2부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 3부 完

 

< 중급 SQL 시리즈 >

 

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 1부

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 2부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 3부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 4부 完

 

 

 

이 포스팅은 해당 강좌를 수강하며 작성하였습니다.

https://www.inflearn.com/course/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EA%B3%A0%EA%B8%89-SQL/dashboard

 

[백문이불여일타] 데이터 분석을 위한 고급 SQL - 인프런

SQL 고급 이론을 배우고, 실습 문제를 함께 풀어봅니다. 중급이상 데이터 분석 데이터베이스 데이터베이스 SQL 데이터 분석 온라인 강의 실무에 필요한 연산을 효율적으로 처리하기 위한 SQL의 고�

www.inflearn.com

 

 

DML (Data Manipulation Language)

 

SELECT / INSERT, UPDATE, DELETE

 

SELECT DB에 들어있는 데이터를 조회, 검색
INSERT DB의 테이블에 데이터 삽입 
UPDATE DB 데이터 수정
DELETE DB의 원치않는 데이터 삭제

 

 

1. SELECT

SELECT 조회하고 싶은 컬럼명 FROM 테이블명

 

 

2. INSERT

행(column) 단위 데이터 삽입

INSERT INTO 테이블명 (column 명) VALUES (각 column에 삽입할 value)

테이블 전체에 데이터 삽입

 

  • DESC 테이블명
  • 테이블의 각 column에 대한 데이터 타입을 확인할 수 있는 명령어

사용예시)

INSERT INTO Salary (Id, name, salary, date) VALUES ('1', 'A', '500', '2020-07-10')
INSERT INTO Salary (Id, name, salary, date) VALUES ('2', 'B', '900', '2020-07-11')

 

 

3. UPDATE 

UPDATE 테이블명 SET column = value

 

 

4. DELETE

DELETE FROM 테이블명

 

조건에 맞는 행(row) 삭제

DELETE FROM 테이블명 WHERE 조건식

 

 

 


 

LEEDCODE

문제 풀이는 더보기 클릭

 

627 Swap Salary - https://leetcode.com/problems/swap-salary/submissions/

더보기
UPDATE salary
SET sex = CASE
		WHEN sex = 'f' THEN 'm'
		WHEN sex = 'm' THEN 'f'
		ELSE 'Other'
	END

 

 


 

< 기초 SQL 시리즈 >

 

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 1부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 2부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 3부 完

 

< 중급 SQL 시리즈 >

 

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 1부

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 2부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 3부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 4부 完

 

 

 

이 포스팅은 해당 강좌를 수강하며 작성하였습니다.

https://www.inflearn.com/course/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EA%B3%A0%EA%B8%89-SQL/dashboard

 

[백문이불여일타] 데이터 분석을 위한 고급 SQL - 인프런

SQL 고급 이론을 배우고, 실습 문제를 함께 풀어봅니다. 중급이상 데이터 분석 데이터베이스 데이터베이스 SQL 데이터 분석 온라인 강의 실무에 필요한 연산을 효율적으로 처리하기 위한 SQL의 고�

www.inflearn.com

 

 

집합연산 UNION / UNION ALL

중복된 값을 제거하는 것이 UNION의 default

만약에 중복되는 값이 없는 테이블 연산이면 UNION ALL을 사용하는 것이 좋다

 

주의할 점 : A UNION B 를 수행할 때 A에는 ORDER BY 사용 못함

 

로그인 아이디 연락처 주소
A 010-1111-1111 광진구 자양동
B 010-2222-2222 송파구 석촌동
로그인 아이디 연락처 주소
C 010-3333-3333 분당구 판교동
B 010-2222-2222 송파구 석촌동

 

UNION  결과 => 중복 제거

로그인 아이디 연락처 주소
A 010-1111-1111 광진구 자양동
B 010-2222-2222 송파구 석촌동
C 010-3333-3333 분당구 판교동

 

UNION ALL 결과 => 중복 허용

로그인 아이디 연락처 주소
A 010-1111-1111 광진구 자양동
B 010-2222-2222 송파구 석촌동
C 010-3333-3333 분당구 판교동
B 010-2222-2222 송파구 석촌동

 

JOIN 연산 사용 예시

-- product 테이블에서 Price가 5이하 또는 200 이상인 상품들만 출력하세요

SELECT *
FROM Products
WHERE price <= 5

UNION

SELECT *
FROM Products
WHERE price >= 200

 

 

FULL OUTER JOIN (MySQL에선 지원 안되지만 LEFT와 RIGHT를 사용해서 구현)

 

고객정보는 있지만 주문 정보는 없을 때

주문 정보는 있지만 고객 정보는 없을 때 를 모두 조회하고 싶다면 LEFT 조인과 RIGHT 조인을 UNION 해준다

SELECT *
FROM Customers
	LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
    
UNION
  
SELECT *
FROM Customers
	RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID

 

 


 

HACKER RANK

 

정답 확인은 더보기 클릭

 

1. Symmetric Pairs - https://www.hackerrank.com/challenges/symmetric-pairs/problem?h_r=internal-search

더보기
/*
20 20 (2번 나와야함 모두)
UNION
20 21
22 23
*/

-- 20 20 케이스 도출
SELECT x, y
FROM Functions
WHERE x = y
GROUP BY x, y
HAVING count(*) = 2

UNION

SELECT a.x
		, a.y
FROM Functions AS a
		INNER JOIN Functions AS b ON a.x = b.y AND a.y = b.x
WHERE a.x < a.y
ORDER BY x

 


 

< 기초 SQL 시리즈 >

 

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 1부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 2부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 3부 完

 

< 중급 SQL 시리즈 >

 

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 1부

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 2부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 3부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 4부 完

 

 

이 포스팅은 해당 강좌를 수강하며 작성하였습니다.

https://www.inflearn.com/course/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EC%A4%91%EA%B8%89-SQL

 

[백문이불여일타] 데이터 분석을 위한 중급 SQL - 인프런

SQL 중급 이론을 배우고, 실습 문제를 함께 풀어봅니다. 초급 중급이상 데이터베이스 데이터베이스 데이터 분석 SQL 데이터 분석 온라인 강의 업무에 SQL을 바로 적용할 수 있고 SQL 코딩 테스트도 �

www.inflearn.com

 

+ Recent posts