0. 准备kafka生产者和消费者
kafka生产者程序:
kafka-console-producer.sh --broker-list 192.168.12.115:7776 --topic gpss_test
kafka消费者程序:
kafka-console-consumer.sh --bootstrap-server 192.168.12.115:7776 --topic gpss_test --from-beginning
1. 介绍gpss,gpsscli和gpkafka
从kafka同步数据到greenplum有两种方式:
- 用gpss启动服务,用gpsscli向gpss注册kafka加载作业(重点介绍)
- 用gpkafka组件来快速完成上面的步骤,因为gpkafka封装了gpss和gpsscli的功能
2. 准备配置文件
2.1 准备一个配置文件用于配置gpss服务的host和port
gpss4ic.json
{
"ListenAddress": {
"Host": "",
"Port": 50007
},
"Gpfdist": {
"Host": "",
"Port": 8319,
"ReuseTables": false
}
}
2.2 用于加载kafka数据到greenplum的配置文件
- 加载以"|"分割的流数据的配置文件 kafka_testdata_delimited.yaml
DATABASE: testdb
USER: gpss_usr
PASSWORD: gpss_usr
HOST: mdw
PORT: 5432
VERSION: 2
KAFKA:
INPUT:
SOURCE:
BROKERS: 192.168.12.115:7776
TOPIC: gpss_test
VALUE:
COLUMNS:
- NAME: tid
TYPE: integer
- NAME: tcode
TYPE: varchar
- NAME: tname
TYPE: varchar
FORMAT: delimited
DELIMITED_OPTION:
DELIMITER: "|"
ERROR_LIMIT: 25
OUTPUT:
SCHEMA: testschema
TABLE: test_heap
METADATA:
SCHEMA: ylorder
COMMIT:
MINIMAL_INTERVAL: 2000
POLL:
BATCHSIZE: 100
TIMEOUT: 3000
- 加载JSON格式流数据的配置文件kafka_testdata_json.yaml
DATABASE: testdb
USER: gpss_usr
PASSWORD: gpss_usr
HOST: mdw
PORT: 5432
VERSION: 2
KAFKA:
INPUT:
SOURCE:
BROKERS: 192.168.12.115:7776
TOPIC: gpss_test
VALUE:
COLUMNS:
- NAME: jdata
TYPE: json
FORMAT: json
ERROR_LIMIT: 25
OUTPUT:
SCHEMA: testschema
TABLE: test_heap
MAPPING:
- NAME: tid
EXPRESSION: (jdata->>'tid')::int
- NAME: tcode
EXPRESSION: (jdata->>'tcode')::varchar
- NAME: tname
EXPRESSION: (jdata->>'tname')::varchar
METADATA:
SCHEMA: testschema
COMMIT:
MINIMAL_INTERVAL: 2000
POLL:
BATCHSIZE: 100
TIMEOUT: 3000
3 服务启动过程
3.1 用gpss做etl加载
3.1.1 启动gpss服务
命令格式
nohup gpss gpss4ic.json > gpss_server.log 2>&1 &
### 3.1.2 提交一个作业
命令格式
```bash
gpsscli submit --name kafkajson2gp --gpss-port 50007 --gpss-host mdw ./kafka_testdata_json.yaml
3.1.3 查看作业列表
命令格式
gpsscli list --all --gpss-port 50007 --gpss-host mdw
3.1.4 启动作业
命令格式
gpsscli start kafkajson2gp --gpss-port 50007 --gpss-host mdw
如果要从kafka的Topic的最早的消息开始消费,命令如下:
gpsscli start kafkajson2gp --gpss-port 50007 --gpss-host mdw --force-reset-earliest
3.1.5 再次查看作业
命令格式
gpsscli list --all --gpss-port 50007 --gpss-host mdw
3.1.6 停掉作业
命令格式
gpsscli stop kafkajson2gp --gpss-port 50007 --gpss-host mdw
3.1.7 删除作业
命令格式
gpsscli remove kafkajson2gp --gpss-port 50007 --gpss-host mdw
3.2 用gpkafka load启动服务
注意:
- gpkafka load 可以理解为代替了gpsscli上的提交作业,启动作业等命令。
命令格式
nohup gpkafka load test.yaml --config gpss4gpkafka.json --name fullload1 --force-reset-earliest > gpss4gpkafka_fullload1.log 2>&1 &
参考文档:
Loading Kafka Data into Greenplum
yanivbhemo / greenplum-gpss