ITPub博客

首页 > 数据库 > 数据库开发技术 > 实战大数据项目第1步——模拟数据源接入

实战大数据项目第1步——模拟数据源接入

原创 数据库开发技术 作者:安瑞哥是码农 时间:2022-08-04 18:43:20 0 删除 编辑

对于很多没有实际大数据开发经验的同学来说,一个练手的实战大数据项目会显得特别的重要,一来可以补足你求职简历中没有实战项目的空缺,二来可以进一步夯实和验证你背过的技术八股文,增强你实际解决问题的能力。

那么从这节视频开始,我将围绕一个真正的可落地实战大数据项目展开讲解,这期视频先来说说,该实战项目的第一步:数据源接入。

在之前的视频说过,数据源接入,是任何一个无论简单还是复杂的大数据系统都需要做的第一件事情,但是我提供给大家的是一个超大的文本文件,那么如何模拟真实数据源的接入?

首先要搞清楚,这个数据源对应的业务场景是什么?

上篇文章内容提到过,这份数据描述的是互联网用户的上网行为,那么这个业务场景的特点就是数据源是实时产生的,于是,我们需要模拟数据实时生成的过程,以流的方式一条条生成实时数据,这样除了能尽可能的模拟真实的数据源产生的过程,而且流的方式还能避免很多小伙伴因为集群配置低,无法一下子处理太大数据量的问题。

那有人会说,你给的数据源是一个离线的文件啊,怎么实时呢?

别急,下面我来告诉你怎么做?


具体模拟流程如下图所示:


怎么样,是不是还挺简单的?其实只需要两步就能搞定,我具体描述一下这个流程:

1,通过脚本将数据源文件中的内容逐行读取出来,然后写入到一个staging文件中,脚本内容如下,写的比较简洁,供你参考:
#!/usr/bin/env bash
#########################################
##
#Desc: 模拟真实的数据生产行为,将原始数据文件的内容逐行读到准备区文件中
#
#Author: Anryg
#
##########################################
set -o nounset #必须使用初始化之后的变量
set -o errexit #命令执行过程中如果有报错,直接退出整个脚本
###################################################
#
# _LOG
#
####################################################
# $1 - message
# $2 - log file
_LOG() {
        message="[$(date +'%Y-%m-%d %H:%M:%S') ${0##*/}] $1"
        echo ${message}
        if [[ $# == 2 ]]; then
                echo ${message} >>$2  ##指定日志文件
        fi
}
#################################################
current_dir=$(cd `dirname $0`; pwd)  ##获取程序所在的绝对路径

while read line
    do
        echo "${line}" >> staging.csv ##将读取的数据写入到准备区文件中
        sleep 1  ##每间隔1秒写一次
    done < $1  ##指定数据源文件
    
_LOG "数据文件写入完毕..." ${current_dir}/staging.log

exit 0

2,接着用FileBeat监听这个staging.csv文件,Filebeat会将staging.csv文件中新增的数据实时写入到kafka中,整个过程就完成了模拟数据源的实时接入,其中Filebeat的核心配置如下:
filebeat.inputs:

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /home/filebeat/staging.csv

output.kafka:
    hosts: ["broker01:6667","broker02:6667","broker03:6667"]
    topic: test
    version: 2.0.0

不过这里,需要你提前安装Filebeat,它是一个非常轻量级的日志收集工具,非常的简单、好用,能够将日志文件中新增的信息实时发送给kafka集群,当然,集群环境需要你提前准备好。

当然,以上是我的提供的模拟接入的一个方式,如果你有其他更好的办法,那再好不过了。

如果你还有其他配置问题或者环境问题,也可以找我交流讨论。

以上,就是这个实战项目,模拟数据源的接入方式,希望这一步对你来说是so easy的事情。

我这有一个高质量的大数据学习讨论群,不怎么扯淡、偶尔活跃气氛、大部分时间都在讨论技术,你在群里的几乎任何大数据相关的问题,都可以得到解答,要不要进来试试呢?拉你进群啊...


原文作者:安瑞哥是码农;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-02-16

  • 博文量
    228
  • 访问量
    115434