kafka(21)
-
[🔥Spark] Spark Streaming + Kafka Option
Spark Streaming Kafka Option Example df = spark \ .readStream \ .format("kafka") \ .option("option name", "option value") \ .load() startingTimestamp 구독중인 주제의 모든 파티션에 대한 시작 타임스탬프를 지정한다. 타입: timestamp string e.g. "1000" 기본값: none (next preference is startingOffsetsByTimestamp) startingOffsetsByTimestamp 쿼리가 시작될 때 타임스탬프의 시작점 타입: json string """ {"topicA":{"0": 1000, "1": 1000}, "topicB": {"0": 200..
2021.11.01 -
[🔥Spark] Spark Streaming + Kafka 연동하기
개요 카프카를 사용하는 경우 데이터를 가공해서 다시 카프카로 넣거나 다른 곳으로 보내는 등의 처리를 해줄 곳이 반드시 필요하다. Spark Streaming을 사용하면 문제를 쉽게 해결할 수 있다. 자체적으로 kafka에서 읽고 처리 후 kafka로 보내는 기능이 포함되어 있으며 Spark에서는 1.2버전부터 파이썬에서 Spark Streaming을 사용할 수 있게 되었다. Spark Streaming에는 DStreams라는 기능이 있고, 그 위에 DataFrame을 사용하여 더 쉽게 처리를 할 수 있는 Structed Streaming이 있다. 여기에서는 Structed Streaming을 사용하려고 한다. 방법 spark.readStream을 사용하여 카프카의 어떤 토픽에서 데이터를 가져올지 정한다...
2021.10.29 -
[🧙Kafka] Confluent License
개요 카프카를 구축할 때 Confluent에서 제공해주는 서비스가 정말 유용한데, 일부는 무료이고 일부는 사용기간 이후에는 라이센스가 필요한 경우가 있다. 서비스마다 다르므로 잘 확인하고 사용해야한다. 라이센스 정보 Enterprise (Subscription) License Confluent Server Confluent Control Center Confluent for Kubernetes Confluent Replicator MQTT Proxy Community License Confluent REST Proxy ksqlDB Confluent Schema Registry Confluent Admin REST API Connector의 경우 커넥터는 종류에 따라 라이센스가 다르다. 이 링크에서 확인할..
2021.10.14 -
[🧙카프카] Kafka Schema Registry 사용 설명서
카프카는 메시지를 보내는 Producer와 Consuemr로 이루어져 있다. 카프카는 Producer가 메시지를 보낸 후 Consumer가 소비하려고 할 때 누가 보낸 메시지인지 확인할 수 있는 방법이 없다. 그래서 Producer가 메시지를 기존에 보내던 것과 다른 스키마 형식으로 보낸다면 Consumer는 바뀐 메시지를 받았을 때 문제가 크게 발생할 수도 있다. 이런 일을 방지하기 위해서 스키마 레지스트리를 사용할 수 있다. Schema Registry란? 스키마 레지스트리는 Producer와 Consumer가 주고 받으려는 메시지의 스키마를 서로 알게 해주고 호환을 강제한다. 예를 들면 Producer가 처음에 정의했던 스키마와 호환되지 않는 스키마를 보내려고 할 때 보낼 수 없게 막아준다. 스키마..
2021.07.26 -
[🧙Kafka] ETL IS DEAD, LONG-LIVE STREAMS: 네하 나크헤데
개요 카프카를 활용한 인프라를 설계해보기 위해 찾아보다가 Confluent 공동 창립자 중 한명인 네하 나크헤데의 프레젠테이션을 보게 되었다. 이번에는 그 내용을 정리해보려고 한다. 프레젠테이션 내용 지난 10년간 데이터 시스템은 많이 바뀌었다. 여러 DB에서 데이터 웨어하우스로 ETL하여 데이터를 넣는 방식이었다. 최근 몇가지 데이터 추세는 ETL 아키텍처의 극적인 변화를 주도하고 있다. Single Server Database는 전사적 규모로 분산 데이터 플랫폼으로 바뀌고 있다. 그리고 일반적인 데이터가 아닌 logs, sensors, metrics 등으로 데이터 타입이 많아지고 있으며 스트림 데이터는 점점 보편화(increasingly ubiquitous)되고 있다. 그래서 그 결과는 아주 복잡한 ..
2021.07.20 -
[🧙Kafka] 카프카 토픽 이름 짓는 법(Topic Naming Convention)
개요 카프카에서는 토픽을 많이 생성해서 사용하는데 Naming Convention 없이 사용하게 된다면 나중에 복잡해질수도 있기 때문에 알아보려고 한다. Convention 카프카에서 토픽을 생성할 때 유효한 문자는 [영문, 숫자, '.', '_', '-']만 사용할 수 있다. 그리고 유의할 점은 마침표(.)와 밑줄(_)은 충돌할 수 있기 때문에 둘 중 하나만 사용하는 것이 좋다. 선택할 수 있는 예시들은 다음과 같다. .. -- ... .. .. ... .. .. 이 게시물을 작성한 사람은 이 데이터 타입으로 성공했다고 한다. 이 방식으로 사용하면 인프라가 어느정도 커져도 커버할 수 있을 것으로 예상된다. message type logging queuing tracking etl/db streaming..
2021.07.11