建立訊息佇列(Kafka)源表

李博bluemind發表於2018-11-14

Kafka源表的實現來源於自社群的kafka版本實現。

注意:本文件只適合獨享模式下使用。

Kafka需要定義的DDL如下。


  1. create table kafka_stream(
  2. messageKey VARBINARY,
  3. `message` VARBINARY,
  4. topic varchar,
  5. `partition` int,
  6. `offset` bigint
  7. ) with (
  8. type =`kafka010`,
  9. topic = `xxx`,
  10. `group.id` = `xxx`,
  11. bootstrap.servers = `ip:埠,ip:埠,ip:埠`
  12. );

注意:以上表中的五個欄位順序務必保持一致。

WITH引數

通用配置

引數 註釋說明 備註
type Kafka對應版本 推薦使用KAFKA010
topic 讀取的單個topic topic名稱

必選配置

(1)kafka08必選配置:

引數 註釋說明 備註
group.id 消費組id
zookeeper.connect zk連結地址 zk連線id

(2)kafka09/kafka010/kafka011必選配置:

引數 註釋說明 備註
group.id 消費組id
bootstrap.servers kafka叢集地址 kafka叢集地址

Kafka叢集地址:

如果您的kafka是阿里雲商業版,請參考kafka商業版準備配置文件。

如果您的kafka是阿里雲公測版,請參考kafka公測版準備配置文件。

可選配置


  1. "consumer.id","socket.timeout.ms","fetch.message.max.bytes","num.consumer.fetchers","auto.commit.enable","auto.commit.interval.ms","queued.max.message.chunks", "rebalance.max.retries","fetch.min.bytes","fetch.wait.max.ms","rebalance.backoff.ms","refresh.leader.backoff.ms","auto.offset.reset","consumer.timeout.ms","exclude.internal.topics","partition.assignment.strategy","client.id","zookeeper.session.timeout.ms","zookeeper.connection.timeout.ms","zookeeper.sync.time.ms","offsets.storage","offsets.channel.backoff.ms","offsets.channel.socket.timeout.ms","offsets.commit.max.retries","dual.commit.enabled","partition.assignment.strategy","socket.receive.buffer.bytes","fetch.min.bytes"

注意:其它可選配置項參考kafka官方文件:

Kafka09
https://kafka.apache.org/0110/documentation.html#consumerconfigs

Kafka010
https://kafka.apache.org/090/documentation.html#newconsumerconfigs

Kafka011
https://kafka.apache.org/0102/documentation.html#newconsumerconfigs

kafka版本對應關係

Type Kafka 版本
Kafka08 0.8.22
Kafka09 0.9.0.1
Kafka010 0.10.2.1
Kafka011 0.11.0.2

Kafka訊息解析

預設Kafka讀到的訊息:


  1. messageKey varbianry,
  2. message varbianry,
  3. topic varchar,
  4. partition int,
  5. offset bigint

這樣一個五元組,如果您希望在source階段把資料parser成特定的其它格式,可以按照下面實踐進行。

引數 註釋說明 備註
parserUdtf 自定義解析函式 用於解析從kafka讀到的訊息對映到ddl具體對應的型別

如何寫一個parserUdtf參見自定義表值函式(UDTF)

自建kafka

與阿里雲Kafka訊息佇列一樣,DDL定義相同。

示例:


  1. create table kafka_stream(
  2. messageKey VARBINARY,
  3. `message` VARBINARY,
  4. topic varchar,
  5. `partition` int,
  6. `offset` bigint
  7. ) with (
  8. type =`kafka011`,
  9. topic = `kafka_01`,
  10. `group.id` = `CID_blink`,
  11. bootstrap.servers = `192.168.0.251:9092`
  12. );

WITH引數

關於自建Kafka的with引數,請參考本文件Kafka建立時DDL的with引數說明。需要注意的是 bootstrap.servers引數需要填寫自建的地址和埠號。

注意:無論是阿里雲Kafka還是自建Kafka,目前實時計算均無Tps、Rps等指標資訊。在作業上線之後,運維介面暫時不支援顯示指標資訊。

本文轉自實時計算——建立訊息佇列(Kafka)源表


相關文章