开发者学堂课程【新电商大数据平台2020最新课程:电商项目之 Flume 数据同步操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/640/detail/10513
电商项目之Flume数据同步操作
上节说了 flume 的配置安装和参数讲解,也讲了 flume 的配置,即 .com 文件配置完成;主要是通过外部数据来使用 flume 监控本地磁盘文件夹,然后采集每一个文件的数据,将这个数据采集到我们的 hzl 上面即可。
主要是将 flume 安装在 usr local 这个下面的,有个 flume-1.8要记住,然后 flume 下面的1.8里面有一个 cont 文件和 data 。
上节设计了元数据的保存位置,我们的元数据保存位置是
/usr/local/flume-1.8/flume-log/taildir_position.josn
这节做测试的时候,我们可以看一下里面依次保存的是什么东西,
还有我们要采集哪个文件夹,是采集
/usr/local/flume-1.8/data/.*csv 文件。接下来我们开始启动,把命令复制一下,因为它是比较长的。
在电脑里找到课件文档→项目库→电商 V2 →电商项目 V2 数据采集。
我们启动 root ,命令是 bin/flume-ng agent -n agent1 -c conf -f conf/agent.conf -Dflume.root.logger=DEBUG,console 。
放到上面的位置,进行检查。名叫 agent1 ,正确,进行启动。启动之后会进行采集,它会卡在下图的这个地方,因为这个里面是没有数据的。
可以看到 log 里面有1.csv 、2.csv ,下面就是我们采集的文件夹的文件。我们看一下上面是否有这个数据,
这个是在昨天测试的时候采集的。
我们在启动一个任务,在这个任务里面改一下里面的东西,因为我昨天在测试的时候使用 share 的方式进行测试的,此时第一个任务是一直在等待采集数据的。在第二个里面我们会发现有1.csv ,它就是我们的数据文件,给他拉到对应的文件夹下面。
1. sh 其实就是一个发动过程, csv 一定要和它是一个同级目录,在一个同级文件夹里,不然的话就会写别的东西。如果是一个同级文件夹就不用写,直接把1.csv 放在这里就可以了。别名不能是2,因为我们已经采集过了,所以改为3.csv 。
现在我们运行一下,看第一个任务里的 log ,可以看到数据现在正在进行采集,生成了一个 bdp_day=20200321,这个时候就说明我们的数据已经采集了一个。
在这个页面刷新一下,可以看到又生成了一个我们刚刚采集的,就是第二个。那这个东西就是我们所采集过来的数据,我们将所采集的数据刷新一下它就会生成一个文件。
上图红色方框内就是我们刚刚采集的数据,说明这个数据已经采集到上面了,那么你的外部数据采集到这个上面之后,就要将这个数据映射到 hive 表里,就可以把它停掉,因为我们的数据已经采集完成了。输入 stopped 就可以了。
采集完成以后,这个有7乘24小时的实时监控,是不能停的;只要有数据它就采集,数据上去之后,我们把它映射到 hive 表里。我们进入 hive 。
进入 hive 之后,我们先创建对应的表。
这个名字一定要和数据仓库里的对应,有一个广告投放信息,可以看到是一样的。
将上述的 hive 表复制进行创建,如此就创建成功了。
创建成功之后,我们就可以直接使用下面的命令,我们默认区分格式以逗号区分,所以我们不用进行修改,让它默认就可以了,然后给他映射进来就可以了。
映射的时候一定要注意,我们的时间是20200321,对照一下。
这个时候我们进行查询, select 一下就可以,查询的表是 ods_nshop.ods_01_releasedatas , limit 进行查询。可以看到是有数据的。
不过有一列是空的,应该是我们的创建时间空了,用下图这一个数据进行检查。
我们可以看到这里面有12个字段,加上我们的分居一共是13个字段,我们的1.csv 里的文件是有11个,少了一个应该就是时间字段,没有太大关系;把表格里多余的信息删掉。
最后一列的时间是空的,我们对照一下:
用户 id 、设备号、设备类型、手机系统、手机系统版本、手机制造商、地区编码、投放请求 id 、投放回话 id 、投放渠道、投放请求参数。现在的情况是少了一列, ct 为空,所以我们自己在后面的处理需要注意一下;因为 ct 是空的,所以就不取它了。
前面还有一列少值,可能是地区编码。我们的数据已经映射到了,它里面只是少了一个数据,可能是投放会话 id 、请求 id 。投放渠道与请求参数都没有问题。这个就先不管了,我们的这个数据就导进去了,哪一列少了,找一下,之后给他说就可以了。