探索rope

1.官网下载rope源码 ,本机idea打开。https://gitee.com/starblues/rope/wikis

2.设置淘宝镜像

nodeJS的资源仓库在国内使用过程中,偶尔会遇到各种资源问题,通常设置为淘宝的镜像,网上很多说法是安装淘宝镜像,即

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

然后再用到npm install的时候,使用cnpm install进行安装node_modules。

但是该种方式,在集成到IDE的时候,例如如果想在IDEA中,直接使用node的命令,进行install,就行不通了。这个时候,可以使用第二种方式:

npm config set registry  https://registry.npm.taobao.org

更改npm的config的registry 为淘宝镜像,然后再使用npm的时候,就是从淘宝镜像拉取数据了

3.idea打开rope项目。

4.命令行进入到rope-web文件夹,删除node_modules文件夹,然后命令行执行cnpm install重新下载所有依赖。

5.打开web页面,创建流程执行ETL任务。地址:http://127.0.0.1:8080/admin 用户名/密码:admin/12345

创建流程步骤

(1)配置流程相关基本信息

       流程存储器指定流程以什么形式存储,是json文件、yml文件还是直接存在内存里,前两个持久化存储,内存不是持久化,关闭rope程序就消失。

       是否启动流程 :创建完流程是否启动流程

       流程id唯一标识此id;流程名称用来区别不同的流程

流程数存储在rope项目目录下。 

(2)配置输入。配置完一个选项,必须点击提交

      输入配置:指定读取者读数据的周期。这个可以自己扩展实现,也可以使用已经实现的Input。

       读取者:指定如何读取数据。可以通过实现接口:com.starblues.rope.core.input.reader.Reader类自定义具体实现。

(3)配置处理者 

(4)配置输出和写入者。 此时点击下一步即可保存流程。在流程首页即可操作流程启动、关闭、删除等。

如果选择简单输出到本地文件, 请注意文件路径需要指定到文件名。 

自结

流程用来指定数据读取的整个过程,需要指定输入(Input Reader)、输出(Output Writer)、数据处理(Handler)。Reader指定怎么读取数据,Input指定Reader读取的时间周期;Writer指定如何写入数据,Output指定数据如何写出。

如果要定制化Input Reader等,既可以在rope已经有的插件中定义新的Input Reader类,也可以新建插件,然后在插件中定义输入、输出、数据处理等程序。定义好的输入、输出、数据处理等会在构建流程时出现在选项中。

6.流程中使用指定数据库

(1)增加数据库key:rope-databases-plugin模块 ---- resources--databases-plugin.yml增加数据库配置。注意:oracle url最后不是数据库,是sid

     下载指定数据库的jar包,放在本地计算机,然后指定具体路径。

      注意:每次修改都需要在根目录重新执行mvn命令 mvn clean install -Dmaven.test.skip=true

 (2)web页面读取者选择数据库复杂读取者。 

         上一步配置的key此时在 数据库连接key可以看到,选择此自己配置的数据库key;

          填写好查询sql

 (3)选择数据处理者。

 

(4) 选择数据写入者

7.编写插件

参考官网文档编写扩展 https://gitee.com/starblues/rope/wikis/pages?sort_id=1865022&doc_id=507971

新建插件:rope-plugins 模块上右键选择  New ---- Module,新建一个Maven类型的Module。然后按照官网文档要求配置pom、properties文件,来指定插件的基础信息。

插件内新建处理类:插件内可以编写Input、Output、Reader、Writer、Handler等对数据进行ETL处理。都是通过实现指定接口或类的方法即可实现对数据的处理,不需要其他配置。

比如Reader通过读取数据库配置文件获取数据库连接,通过查询语句查询数据,将数据封装到Record类中,传给Handler处理,最后传给Writer处理。

rope使用Jdbi来处理数据库接口,Jdbi3官方教程Jdbi 3 官网

Jdbi 3 简单的一些API示例

 (1)使用DataSource创建Jdbi对象。DataSource可以通过Druid读取配置文件获取。

DataSource ds = Jdbi jdbi = Jdbi.create(ds);

(2)使用Handle获取查询数据

如果查询返回数据,使用jdbi.withHandle():

List<String> names = jdbi.withHandle(handle ->
    handle.createQuery("select name from contacts")
          .mapTo(String.class)
          .list());
assertThat(names).contains("Alice", "Bob");

如果查询没有返回数据,使用Jdbi.useHandle(HandleConsumer):

jdbi.useHandle(handle -> {
    handle.execute("create table contacts (id int primary key, name varchar(100))");
    handle.execute("insert into contacts (id, name) values (?, ?)", 1, "Alice");
    handle.execute("insert into contacts (id, name) values (?, ?)", 2, "Bob");
});

8.新增加插件、Input、Output、Reader、Writer、Handler等之后,需要在根目录或者修改代码的模块内重新执行mvn命令打包,此时新增的功能才能实现。

mvn clean install -Dmaven.test.skip=true

注意:修改代码、配置文件等,需要重新执行mvn命令,否则不生效。

9.遇到问题

问题一

Downloading binary from https://cdn.npm.taobao.org/dist/node-sass/v4.9.4/win32-x64-83_binding.node

Cannot download "https://cdn.npm.taobao.org/dist/node-sass/v4.9.4/win32-x64-83_binding.node":

解决方法:https://blog.csdn.net/u014163312/article/details/116175991

问题二 

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.10.RELEASE:repackage (repackage) on project rope: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.1.10.RELEASE:repackage failed:Plugin org.springframework.boot:spring-boot-maven-plugin:2.1.10.RELEASE or one ofits dependencies could not be resolved....... Could not transfer artifact org.apache.maven.shared:maven-shared-utils:jar:3.2.0 from/to central (https
://repo.maven.apache.org/maven2)  

解决办法:修改maven镜像为阿里云 https://www.jianshu.com/p/dddc8b8c5c74

问题三

Caused by: java.lang.ClassNotFoundException: io.netty.channel.SimpleChannelInboundHandler

启动时需要配置 user classpath of  module值为 rope-runner。可以通过idea右上角点击 Edit configuration--spring boot来指定 或者ApplicationRunner右键---Create ‘’来配置。

问题四

org.pf4j.PluginRuntimeException: Cannot find the manifest path

不要将rope-plugins设置为module,删除掉src目录即可

问题五

cannot find class xxx xxx为新建的插件类

命令行进入到插件目录,然后mvn clean install生成target即可

问题六

如果前端没有退出,后端重启,前端报错位置错误

此时 右上角退出系统 重新登录即可

问题七

Project xxx  is duplicated in the reactor

解决:查找所有模块的pom文件,XXX模块重复配置了

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Rope是一款轻量级别的ETL(Extract-Transform-Load)工具。主要用于从不同源获取/接受数据,然后统一处理数据后,写入到各种目标源;系统采用多级缓冲和数据缓存,每秒可处理上万级别的数据;而且系统采用插件扩展系统的各个组件,针对不同需求扩展不同插件。 Rope特性: 1、轻量级别、快速、简单,入门门槛低 2、基于Springboot开发 3、扩展性强,基于插件开发,可根据不同需求来开发数据读取者、数据处理器、数据写入者 4、既可通过UI界面来构建流程、也可以使用json、yml文件构建流程 5、基于 Disruptor 做的缓冲,并新增缓存(内存、redis、rocksdb等),处理速度快 Rope核心模块: 输入模块 用于控制数据的输入动作。主要包括两种类型:主动获取型输入、被动接受性输入。 数据读取者 该模块主要是读取数据的具体实现,可自行扩展。不能单独运行,需要作用于 主动获取型Input上才能运行。 数据传输模块 主要对数据进行传送,系统中存在两种数据传输:一个是用于把输入模块输入的数据传输到数据处理器中,另一个是把数据处理器处理后的数据传输到输出模块中。目前支持默认的数据传输器和基于Disruptor的缓冲数据传输器,在实际环境中建议Disruptor的缓冲数据传输器。 数据处理器模块 该组件为数据处理器,其作用是处理数据,比如将字符型数据处理成其他类型、丢弃某数据、新增某数据字段。该组件可自行扩展,是非必须组件。 数据输出模块 该组件主要用于系统数据的输出,即将数据以哪种方式输出,它并不关心数据输出到哪里去,只关心数据如何输出。 数据写入者 该组件为具体数据写入的实现,它主要关心数据写入到哪里去,为数据输出的具体实现。必须作用于Output上才能运行。 数据转换器-Converter 数据转换器,该组件主要用于数据类型的转换,大部分情况是配合Reader Writer实现的,核心思想是让Reader Writer关心数据的读取、写入,它关心数据类型的转换细节。这样就具有很强的扩展性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值