- JDK 1.8及以上
- Maven 3.2及以上
rsqldb依赖的RocketMQ-Streams版本为1.0.2-preview-SNAPSHOT(RocketMQ-Streams近期会做一次发版,发版之后省略该步骤)。
git clone https://github.com/apache/rocketmq-streams.git
#切换到main分支
mvn clean install -DskipTest -U
git clone https://github.com/alibaba/rsqldb.git
mvn clean package -DskipTest -U
进入rsqldb-disk模块下,将rsqldb-distribution.tar.gz安装包拷贝到任意目录,并执行命令解压并进入解压目录:
tar -zxvf rsqldb-distribution.tar.gz;cd rsqldb
sh bin/startAll.sh
执行sql以sendDataFromFile.sql为例,该sql任务的数据处理流程为:从本地data.txt文件中读取数据(data.txt文件在client目录中),过滤出field_1=1的数据,并打印在日志中;为了顺利执行,需要做以下配置:
- client/sendDataFromFile.sql中修改filePath指向data.txt的全路径,例如为:/home/rsqldb/client/data.txt;
执行路径依然在rsqldb解压目录下
sh client/clientExector.sh submitTask ${sendDataFromFile.sql文件绝对路径}
sendDataFromFile.sql会从本地文件data.txt中读取数据,过滤出只含有field_1=1的数据,并将结果数据输出到日志中。
在rsqldb解压目录下执行,tail运行日志,为查看结果做准备。
tail -f log/rsqldb-runner.log
另开一个shell窗口,进入解压后的rsqldb目录,执行以下命令启动任务,1分钟后,查看日志输出,会将执行结果打印到日志中。
sh client/clientExector.sh startTask
观察rsqldb-runner.log输出,输出结果中,只包含field_1=1的数据。
在rsqldb解压目录下执行
sh client/clientExector.sh queryTask
返回已经提交的任务列表。
在rsqldb解压目录下执行
sh client/clientExector.sh stopTask
上述示例为从本地文件data.txt中读取数据,更为常用的用法是从RocketMQ中读取数据处理,下面给出具体步骤:
-
本地安装并启动RocketMQ,安装文档
-
启动rsqldb服务端
sh bin/startAll.sh
- 提交任务
sh client/clientExector.sh submitTask ${rocketmq.sql文件绝对路径}
rocketmq.sql会从RocketMQ的rsqldb-source中读取数据,过滤出field_1=1的数据,并将结果输出到日志文件中。
- 查看输出
tail -f log/rsqldb-runner.log
- 另开一个窗口,启动任务
sh client/clientExector.sh startTask
-
向RocketMQ中生产数据:topic为rsqldb-source,与rocketmq.sql任务中的topic名称保持一致,向该topic写入data.txt文件中的数据。
-
观察输出,在输出结果中,只包含field_1=1的数据。