00:02
下面我们为大家讲解。通过ETL engine.如何实现将reddis与MYSQL之间的数据进行同步?我们的需求是读MYSQL数据表,数据写到当中。再将写入reddis的数据。回写到MYSQL数据表中。前置条件我们已经准备好了。一个radius服务器和一个MYSQL服务器。MYSQL中。T readyinfo数据表已经模拟了数据。我们可以看到。MYSQL数据表中有7条数据。我们要将caption这一列的数据。写到radis当中的key。其他的字段组合起来。
01:00
写到rad当中的value。来实现MYSQL跟之间。数据相互同步的操作。那么,我们是如何实现的呢?我们登录到后台。打开已经配置好的。ETL任务。我们解读一下。当前任务内容。任务中有2个任务流。第一个任务流是读数据表。将数据表数据写到redis。第二个任务流是读redis,再写到MYSQL。数据表。配置的主要环节。第一个。要使这个任务执行模式设置成串行。
02:05
执行的效果。我们看一下右边的任务属性。执行模式当中,我们支持并行和串行。我们选择了串行。这样系统会先执行第一个任务流。执行完毕之后,再执行第二个任务流。就是通过这个属性来配置的。两个连接线当中的order属性。分别设置不同的数字。这里我们设置成0和1,目的是先执行0,再执行,通过数字的大小来区分先执行哪一个任务流。我们选择第一个人留的连接线。
03:01
看节点属性order。属性值是。第2个任务流的连接线属性,Order.它的数字是1。这样就实现按顺序执行2个任务流。第一个任务流当中,我们配置读数据表节点。读数据表节点中。我们的SQL语句是读caption。然后连接其他的字段。连接符是用了一个分号。那么我们看一下它输出的效果。就是这条SQL语句。
04:01
它会输出一个K和V两个字段。K就是caption的内容。V是将各个字段用分号进行连接。我们需要将这样结构的数据。写到radius当中。She radius节点中。设置petta match为true。Outputs, 设置K和B。这个属性代表了我们读数据表节点当中。输出的数据结构有一个K和V两个字段。这个是一个关键的属性。另一个关键的属性就是rename output fields.我们设置成key和value。因为写reddis节点中系统会默认生成。
05:01
一个key和value两个字段。的一个数据结构。因此,我们。把rename output fields设置成key和value。执行的逻辑是将输入节点当中的K和V。转换成对应的输出节点当中的key和value。看一下写节点。Pattern match key设置成true。然后创建一个原数据,原数据的结构是两个字段,Key和value。这里的逻辑。原数据主要是给写节点使用的。那么写节点当中。
06:00
最后输出的是T和value两个字段。所以我们的原数据要使用key和value作为它的输出数据。结构看一下已经创建的原数据。Meta data1。Key和value。我们的第一个任务流的连接线。Ma data属性选择了原数据ma data1。这样就实现了第一个任务流的配置。第二个任务流是读redis节点。我们这里模拟城。将刚才写入的所有key全部读出来。这里的key。用一个星字符代表所有P。写到数据表的时候,我们用了一条SQL语句。
07:07
其中最关键的属性就是output fields.我们配置成数据表当中的。5个字段名称。这个属性代表了。我读取出来的数据。的数据结构。这里我们从red当中读取出来的只有两个字段,就是key和value。为了写到数据表时。将2个字段转换成5个字段的数据结构,我们这里需要做一些转换操作。通过嵌入购脚本。来处理输入数据流的各个字段。姜。输入数据流的两个字段进行拆分。
08:01
拆分成我们想要的数据结构。那么output fields和rename output fields.字段、名称及个数要保持一致。我们看一下如何写构脚本。即具体内容。我们在输出写数据表。节点当中的。Bphorio的标签。嵌入购脚本主要逻辑就是。增加一个字段A。我们用了内置函数common get with来生成aid。输入节点当中的value是由。It caption me mote.通过分号分隔组成,我们将输入节点当中的value。进行拆分。
09:02
分成caption memo tag三个字段。我们看一下具体嵌入脚本的写法。首先读redis。我们这里设置了关键的属性。取所有P。写数据表。设置了写入SQL句。即输出字段名称。在before it out.标签当中。写我们的嵌入购脚本。看一下我们的这个脚本内容。试降。输入的结构体。进行业务逻辑处理。在循环当中,我们增加了一个字段是A。
10:05
例如,我们用了内置函数生成UD。然后取输入的value这个数据结构。Value数据结构。由分号分隔的各个字段的值组成。我们要将它拆分出来。这里用分号进行拆分。并且取出caption meal和tag的内容。分别创建所需要的字段。大家可以看出,我们的结构体就是一个尺寸对象,非常容易操作。这是增加了caption me tag的数据结构。下面又增加了一个right times, 使用系统内置的时间格式。
11:05
最后,我们将。单son结构体循环组装成一个记录及返回。这样就实现了将redis的数据读取出来。并拆分写到数据表。我们再看一下当前任务流。它应该是5个字段的原数据。看一下原数据ma data2。It caption memothe.Right time.字段名称要跟t info数据表一一匹配。我们的连接线ma data, 选择原数据ma data2。Order事宜代表是最后执行。我们运行任务后,运行的结果是先将读数据表的数据写到redis里。
12:03
也就是将这7条数据。写到redis的DB1里。再将DB的。Reddis数据读取出来。写到MYSQL数据表当中。我们MYSQL数据表目前只有7条,写入成功的时候就应该是总共14条。唯一区分就是A的不同,新记录aid用U的格式,当前数据表的aid是数字。这就是我们整个的任务逻辑,我们运行一下,看看是不是我们想要的效果。看一下日志。读数据表7条。SHE7条。
13:00
读REDIS7条,写数据表7条。我们看一下数据表里的数据。新写入了7倍的是U的格式。Caption和各字段内容都已经拆分出来。写入成功了。那么这7条数据是哪里来的呢?是从reddis里读出来的,我们是先将带数字的7条写到rad里。看一下redis。没错。Radius里已经写入了7个T。内容是各个字段用分号分隔。第2个任务流。就是将。这7条数据又写回了数据表。区别是A的使用。热的来替换的。
14:01
这就是ETLN。通过嵌入构脚本。实现数据格式的转换。就是这么一段代码。实现了一个复杂的操作。增加字段,拆分字段。我们可以做很复杂的操作。
我来说两句