/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번부터 보면 된다.

 

  1. sudo yum install epel-release -y

  2. sudo yum -y update

  3. sudo yum -y install python-pip
    (sudo easy_install-3.6 pip)

  4. sudo pip3 install kafka-python

  5. python3

  6.  

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

+ Recent posts