/home/eyeballs/data/ 에 다음과 같은 텍스트 파일들이 있다고 하자.
/home/eyeballs/data/README.md
/home/eyeballs/data/temp.txt
/home/eyeballs/data/finalfinalfinal.tsv
여기 있는 파일들을 모두 Kafka 로 producing 하는 스크립트를 작성하고 싶다.
kafka-python lib 을 이용하면 쉽게 할 수 있다.
나는 CentOS 7 에서 python 프로그램을 작성한 후 Kafka 로 데이터를 넣었다.
말도 안 되지만 이해를 돕기 위해 kafka broker 는 111.111.111.111:1111, 222.222.222.222:2222 두 대라고 하자.
넣고 싶은 topic 이름은 MyTopic 이다.
python3 과 pip3 가 설치되어 있어야 하며,
이미 설치되어 있는 사람은 5번부터 보면 된다.
-
sudo yum install epel-release -y
-
sudo yum -y update
-
sudo yum -y install python-pip
(sudo easy_install-3.6 pip) -
sudo pip3 install kafka-python
-
python3
from os import listdir from os.path import isfile, join from kafka import KafkaProducer producer=KafkaProducer(bootstrap_servers='111.111.111.111:1111,222.222.222.222:2222') # broker 리스트 mypath="/home/eyeballs/data/" #읽고 싶은 path 지정 fileNames= [f for f in listdir(mypath) if isfile(join(mypath, f))] for fileName in fileNames : f = open(mypath+"/"+fileName, "r") while True: line = f.readline() if not line : break res=str.encode(line) #bytes 형식으로 encoding producer.send('MyTopic', res) #print(line, end='') f.close() |
참고 :
https://jjig810906.tistory.com/6
https://timber.io/blog/hello-world-in-kafka-using-python/
깃허브 : github.com/dpkp/kafka-python
혹은 다음과 같이 파일을 kafka console 명령어로 넣어줄 수 있다.
#!/bin/sh for f in "/home/eyeballs/data"/* do bin/kafka-console-producer.sh --broker-list 111.111.111.111:1111,222.222.222.222:2222 --topic MyTopic < "$f" done |
근데 엄청 느림 ㅎㄷㄷ;
'Kafka' 카테고리의 다른 글
[Kafka] Consumer 의 Offset 초기화하는 방법 (0) | 2020.10.23 |
---|---|
[Kafka] Topic 내의 message 지우는 방법 (0) | 2020.10.21 |
[Kafka] 기본 명령어 (0) | 2020.10.19 |
[Kafka] 기본 개념 설명 링크 (0) | 2020.10.19 |
Kafka 를 배워보자 (0) | 2019.10.14 |