2017-10-06 3 views
1

내 kafka 제작자로 파일을 사용하려고합니다. 원본 파일은 계속 증가합니다 (예 : 초당 20 레코드/줄). 다음은 내 문제와 유사한 게시물은 다음과 같습니다 성장하는 파일을 Apache Kafka 제작자로 사용하고 새로 추가 된 데이터 만 읽는 방법

How to write a file to Kafka Producer

그러나이 경우

는 전체 파일은 새 라인이 파일에 삽입 될 때마다 읽고 카프카 항목에 추가됩니다. 새로 추가 된 행만 주제로 보냅니다 (즉, 파일에 이미 10 개의 행이 있고 4 개의 행이 추가 된 경우 4 개의 행만 주제로 보내야 함).

이 방법이 있습니까?

다른 솔루션 시도 :

  1. 아파치 수로를 'SPOOLDIR'로 소스 유형를 사용하여. 그러나 이미 읽은 파일에 데이터가 추가 될 때가 아니라 디렉토리에 추가 된 새 파일에서 데이터를 읽으므로 아무 쓸모가 없습니다.

  2. 또한 우리는 '간부'와 '꼬리 -F/경로/파일 이름'과 같은 명령 같은 수로 소스 유형로했습니다. 이것 역시 효과가없는 것 같습니다. 다른 도구를 사용하는

제안도 내 목표로 환영하는 실시간에있는 파일에서 데이터를 읽을 수있다 (예.이 파일에 삽입 나는 즉시 데이터가 필요).

+0

Kafka Connect의 [FileSource Connector] (https://docs.confluent.io/current/connect/connect-filestream/filestream_connector.html)를 사용해 보셨습니까? –

+0

감사합니다. Chin Huang. 나는 커넥터에 대해 몰랐다. 그것은 일했다 :) – Sindhu

답변

0

정확한 요구에 따라 볼 수있는 몇 가지 옵션이 있습니다.

카프카 연결 추가 소프트웨어를 설치하지 않고 당신이 원하는 것을 할 수 있어야 카프카 연결에서 FileSource 커넥터 위에 Chin Huang에서 언급 한 바와 같이

. 이 작업을 수행하는 방법에 대한 지침은 Connect Quickstart을 확인하십시오. 실제로 카프카로 파일을 읽는 예제가 있습니다.

Logstash

Logstash는 Kafka 출력이 하나 개 muliple 파일을, 당신이 무엇을 원하는 만 할 것으로, 이런 일에 대한 고전적인 옵션입니다. 다음 구성을 통해 대략 원하는 것을 제공해야합니다. 당신이 파일에서 읽은 데이터를 추가 처리를 수행 할 경우

input { 
    file { 
    path => "/path/to/your/file" 
    } 
output { 
    kafka { 
     bootstrap_servers => "127.0.0.1:9092" 
     topic_id => "topicname" 
    } 
} 

Filebeat

Filebeat가 Logstash 꽤 유사하다, 그냥 적은 기능을 제공합니다. 또한 자바 대신 이동식으로 작성되므로 실행중인 시스템의 공간이 작아야합니다.

filebeat.prospectors: 
- type: log 
    paths: 
    - /path/to/your/file 

output.kafka: 
    hosts: ["127.0.0.1:9092"] 
    topic: 'topicname' 

수로

를 다시 방문 할 경우 다음은 (가 필수 경우, 당신은 매개 변수 또는 두 가지를 추가해야 할 수도 있습니다 메모리에서) 당신이 시작하기 최소 설정해야한다 당신의 Flume 옵션은 TaildirSource를 살펴 본다. 사용하지 않았지만 유스 케이스에 잘 들어 맞아야하는 것처럼 들린다.

+0

제안 된 모든 솔루션은 나를 위해 일했다 :) 고마워요 톤 :) – Sindhu

관련 문제