목록분류 전체보기 (107)
imhamburger 님의 블로그
도커 컨테이너 확인하기$ docker ps 도커 이미지 빌드하기docker build -t {REPO 입력}:{TAG 입력} .#예시docker build -t fishmlserv:0.7.2 . 도커이미지 도커허브에 푸시하기docker push {이미지이름:TAG} 도커 이미지 확인하기$ docker images 도커 실행하기docker run -d -p {외부노출 PORT}:{PORT} --name {도커name 지정} {도커이미지 REPO:TAG} 도커 로그 확인하기docker logs -f {컨테이너 이름} 도커 컨테이너에 들어가기$ docker exec -it {컨테이너ID 혹은 컨테이너이름} bash 컨테이너에서 나오기$ exit 컨테이너 안에서 OS 확인하기$ cat /etc/o..
아파치 카프카(Apache Kafka)는 데이터를 빠르고 안정적으로 주고받을 수 있게 해주는 시스템이라고 생각하면 된다.Kafka는 대용량의 실시간 데이터 스트리밍을 처리하고, 데이터를 저장하며, 스트리밍 데이터를 다양한 시스템으로 전달하는 데 사용된다. 사실 카프카가 등장하기 전, 데이터를 주고받고 처리하는 방식은 원래부터 있었다. 예를들어, 이메일서비스를 생각해보았을 때, 우리는 단순히 이메일을 쓰고 상대방에게 보내면 끝이지만, 사실 이메일 프로세스 안에서는 다양한 데이터를 보내고 받는다. 이메일을 보내는 서비스인 Send는 이메일을 보낼 때, Send는 이메일 피드를 갱신하는 서비스(Feed), 이메일 알람을 보내는 서비스(Notify), 이메일 상태를 담당하는 서비스(Status), 로그를 담..
카프카에서 컨슈머에게 파티션을 할당하는 방법에는 2가지가 있다. 자동할당과 수동할당이 있다. 먼저, 자동할당을 살펴보자. 코드예시from kafka import KafkaConsumerfrom json import loadsOFFSET_FILE = 'consumer_offset.txt'def save_offset(offset): with open(OFFSET_FILE, 'w') as f: f.write(str(offset))def read_offset(): if os.path.exists(OFFSET_FILE): with open(OFFSET_FILE, 'r') as f: return int(f.read().strip()) return None..
if __name__=="__main__" 이 조건문은.... Python 파일이 직접 실행되었을 때만 특정 코드를 실행하도록 한다.만약 이 파일이 다른 곳에서 모듈로 import되면, 이 블록 아래의 코드는 실행되지 않는다. 직접 실행할 때 : __name__ 변수에는 "__main__"이 할당 (이때 __name__ 변수는 파이썬 파일명 그 자체)모듈로 import할 때 : 파이썬 파일이 다른 모듈에서 import된 경우, __name__ 변수는 파이썬 파일명 그 자체라고 하였으니 그 모듈의 이름(파일 이름)이 문자열로 할당 예시 test.pydef hello(): print("hello") if __name__=='__main__': print(f'world!, {__name__}') ..
제플린 context select box 구현하는 방법은 공식문서를 따라하면 된다. sql 로 구현하기SELECT genreAlt, COUNT(*) AS cntFROM ${table=movdir}where genreAlt like '%${genreAlt}%'GROUP BY genreAltORDER BY cnt DESC LIMIT 10 결과genreAlt 부분에 보고싶은 장르만 입력하면 된다. "판타지"를 입력하였을 때 판타지가 포한된 장르가 나온걸 볼 수 있다. 근데 직접 입력하는 것이 아닌 선택박스로 바꾸고 싶다면??SELECT genreAlt, COUNT(*) AS cntFROM ${table=movdir}where genreAlt like '%${genreAlt=드라..
JSON파일을 읽어와 스파크에서 파싱하기 1. JSON파일 불러오기jdf = spark.read.option("multiline","true").json('/home/data/movies')json파일 안에 데이터 형식 단일이 아닌 여러줄로 구성되어 있는 경우, multiline 값을 true로 줘야한다. 2. JSON파일 schema 확인하기jdf.printSchema()root |-- companys: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- companyCd: string (nullable = true) | | |-- companyNm: string (nullable = tr..
스택(Stack) 스택은 후입선출(LIFO, Last In First Out) 방식의 자료구조이다.마지막에 삽입된 데이터가 가정 먼저 삭제되는 구조이다. 스택에서 쓸 수있는 메서드에는 push, pop, peek이 있다.push: 데이터를 스택에 추가pop: 스택에서 가장 최근에 추가된 데이터를 제거하고 반환peek: 스택의 가장 상단에 있는 데이터를 반환하지만 제거하지는 X그림으로 이해해보자! push 처음에 push(1)을 하였다.다음에 push(2)를 하였다.마지막으로 push(3)을 하였다. 그럼, 왼쪽과 같은 그림으로 표현할 수 있다. pop pop()을 하였더니 마지막으로 push했던 값 3이 제거되고 반환되었다. peek peek()을 하였더니 값이 제거되지는 않고 가장..
영화진흥위원회에서 영화데이터를 불러와 영화데이터를 수집하는 프로그램을 만들었다.영화진흥위원회에서 제공하는 영화데이터가 아래와 같이 다양하게 있다. 이중에서 영화목록 ~ 영화인 상세정보를 연도별로 데이터를 저장하는 프로그램을 만들도록 하자.프로그램을 실행했을 때 아래와 같이 나타나도록 할 것이다.tests/test_movie.py 데이터가 이미 존재합니다: data/movies/year=2015/data.json데이터가 이미 존재합니다: data/movies/year=2016/data.json데이터가 이미 존재합니다: data/movies/year=2017/data.json데이터가 이미 존재합니다: data/movies/year=2018/data.json데이터가 이미 존재합니다: data/movies/ye..
지난글에서 스파크가 뭔지?에 대해 설명하였다. 스파크는 빅데이터 처리를 위한 오픈 소스 분산 처리 시스템이다.그리고 분산 처리를 하기위해 스파크에서 중요한 역할을 하는 두 가지 핵심 컴포넌트가 있다. 컴포넌트의 의미는 각각 독립된 모듈이라고 생각하면 된다. 두 가지 핵심 컴포넌트를 설명하기 전에 알아야할 개념이 있다.바로 '클러스터' 이다. 클러스터는 여러 대의 컴퓨터(노드)가 서로 연결되어 협력하여 작업을 수행하는 시스템을 말한다.이는 빅데이터 처리를 위해 여러 노드가 병렬로 작업을 수행하며, 각 노드는 독립적인 컴퓨터로서 네트워크를 통해 상호작용한다. 그러니까, 카페에서 커피 100잔을 만들 때 어떤 사람은 아메리카노, 어떤 사람은 카푸치노, 어떤 사람은 카페 라떼 등.. 나누어 만들지만 어쨋든 주..
배열(Array) 배열은 연속적인 메모리에서 같은 종류의 아이템들을 저장할 수 있는 자료구조이다.배열에 1, 2, 3, 4, 5라는 숫자를 입력하고 컴퓨터 1개의 메모리공간이 1개의 사각형이라고 했을 때, 아래 그림처럼 표현할 수 있다. 연속된 메모리 블록에 저장되므로 인덱스를 통해 빠르게 접근이 가능한 장점이 있다. 그.런.데 저 5개의 메모리공간에 '6'이라는 숫자를 append 하려고 한다면?배열은 고정된 크기를 가지며, 나중에 크기를 늘릴 수 없다.만약 크기를 늘려야 한다면, 새로운 배열을 만들어 기존 데이터를 복사해야 한다. 아래 그림처럼 말이다. 이렇게되면 4개의 메모리공간이 남게되고, 메모리공간에 관하여 효율적이지 못한 단점도 있다. 따라서, 배열의 크기를 동적으로 관리하기 위해서는 ..