一个简单的小时级数据仓库构建

利用Kafka作为中间件,通过spring boot项目开放一个接口传数据,通过生产者发送,消费者来接收数据后按照小时划分存为文件,后load到hive仓库

springboot开发项目 引入Kafka依赖

    <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>2.0.0</version>
            </dependency>
            <!--kafka的⽇志组件依赖包 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.7.25</version>
            </dependency>

Java代码

创建生产者,发送接收到的数据

   @RequestMapping("/send")
    @ResponseBody
    public void sendata(String data) {
            Properties prop = new Properties();
            prop.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, MyKafkaConfig.BROKER_LIST);
            prop.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
            prop.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
            // 2. 创建生产者
            KafkaProducer<String, String> producer = new KafkaProducer<>(prop);
            // 3. 发送数据
            producer.send(new ProducerRecord<>(
                    MyKafkaConfig.TOPIC,
                    data
            ));
        
            // 4. 销毁
            producer.close();
    }

shell向接口发送数据脚本

#! /bin/bash
IFS=$'\n\n'

#只取前5000行测试使用
for i in `tail -5000 data.txt`;
do
    echo $i  
  curl -X POST 'http://127.0.0.1:8077/send' -d "data=$i"

done
~          

启动消费者并把接收到的数据重定向到对应时间文件中

一开始直接把时间切分剩小时,结果报错 ambiguous redirect,又切分一下就好了。。。

原因百度应该是有什么特殊符号问题可能是命令行换行符,,但是我截取出来只有数字。。可能是shell哪里的问题吧。

后来查到也可以这样截取需要的内容:

  1. url="c.biancheng.net"
  2. echo ${url: 2: 9}
  3. 第一个是从第几位开始截取(从0 计数),第二位是截取长度
#! /bin/bash

sh /usr/hdp/3.1.0.0-78/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server cluster0.hadoop:6667 \
--topic ZRF01 \
|while read line
do
times=`echo ${line} | awk -F'\001' '{print $9}' |awk '{print $2}'`
hour=`echo ${times} | awk -F: '{print $1}'`
echo ${line} >> ${hour}.txt
done
~                

把文件load到hive数据仓库,根据小时作为分区

#! /bin/bash
# 查找到目录下所有。txt文件,切分出小时然后循环put到hdfs后load到hive数据库中
filenames=`ls data/*.txt |awk -F. '{print $1}'|awk -F/ '{print $2}'`
for filename in $filenames
do
echo $filename
hdfs dfs -put ./data/${filename}.txt /user/zhaoruifeng/weibodata/
hive -e "
          use zhaoruifeng;
          load data inpath '/user/zhaoruifeng/weibodata/${filename}.txt' overwrite into table weibo_ahour partition(hour_seq='$filename');
    "
done     

上百节课视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 本课程采用由浅入深,层层递进的讲解方式, 让你轻松掌握企业数仓架构的搭建及使用, 使用该架构可以胜任企业实时数仓和离线数仓构建。 课程内容: 1. 项目背景介绍 2. 数据建模应用 3. 基于Kylin的OLAP分析 4. 需求分析与项目设计 5. 订单与销售额指标计算 6.行为指标计算 7.Druid的安装和使用 8.流式数仓实现 适用人群: 1、对企业数据仓库构建感兴趣,有一定大数据基础。 2、对目前职业有进一步提升要求,希望从事数据行业高薪工作的在职人员。 3、对数据行业感兴趣的相关人员。 基础课程主讲内容包括: 阶段一:千亿实时数仓项目总体介绍 1. 数据仓库在企业里面的重要性 2. 千亿实时数仓的项目演示 阶段二: 数据建模的应用 1. 为什么要数据建模 2. 维度和指标的概念 3. 指标和维度建模案例 阶段三. 数据仓库从0到1的过程 1. 数仓典型分层思想(ODS、DWB、DWS、DM、ADS) 2. 数仓建设0到1的过程实战 3. 企业数据仓库设计的规范 阶段四:基于Kylin的OLAP分析 1. Kylin自带的example案例介绍 2. Kylin的Cube创建 3. Kylin的数据膨胀介绍 阶段五:需求分析与项目设计 1. 需求分析 2. canal搭建 3. canal数据写入kafka 阶段六:订单与销售额指标计算 1. 销售额指标体系介绍 2. flink实时消费Kafka订单数主题数据 3. 订单金额指标统计 阶段七:行为指标计算 1. 模拟通过埋点方式采集行为数据 2. 使用Flink Streaming计算用户行为相关指标 3. Flink CEP实现转化率分析 阶段八: Druid的安装和使用 1. Druid实时数据摄入 2. Druid基于JSON查询语法 3. Imply Pivot可视化数据分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值