实时数据项目Kafka之本地模拟

本文介绍了如何通过Shell脚本获取数据并利用Java.jar包进行Base64编码解码,将数据传输到Kafka。同时,创建了一个Springboot消费者项目接收并处理Kafka数据,通过配置文件和启动脚本实现自动化流程。在实施过程中,注意了数据分隔符、正则匹配和curl参数的正确使用,避免了传输错误。
摘要由CSDN通过智能技术生成

1.大局准备

在集群机器上创建两个文件夹

一个RealTimeDataReceiver4Shell文件夹,一个RealTimeDW4Shell文件夹
RealTimeDW4Shell负责:1.下载需要的数据文件, 2.把数据文件行读取进行编码传输到url接收器
RealTimeDataReceiver4Shell负责:1.启动java类包,url接收器接收编码的数据然后转发给kafka,2.kafka消费者获取数据进行解码

2.数据获取

在RealTimeDW4Shell文件夹中创建download_4_weibo_product.sh
负责获取需要传输的数据,保存到hdfs目录

#! /bin/bash

source ./config/set_env.sh
##数据库名
db_name=dongshaofei
#需要获取数据的表
input_table=weibo_product2
#下载到hdfs的目录
output_data_dir_hdfs=./weibo_sorted/
##把表中created_at时间字段能正则匹配到时间格式的数据作为文件放到hdfs目录
##注意下面terminated by '\001' 分隔符用\001, 用\t等分隔符,会在之后的kafka传输过程中出现错误,导致无法取出需要的字段
$HIVE -e "
   use $db_name;
   insert overwrite directory '$output_data_dir_hdfs'
row format delimited fields terminated by '\001'
select * from $input_table where day_seq=20120102 and created_at regexp '\\\d{4}-\\\d{2}-\\\d{2} \\\d{2}:\\\d{2}:\\\d{2}'  order by created_at asc;
"
####需要注意的是 regexp中匹配的正则不能是两个斜杠  ,应该是\\\d

3.数据传输到Kafka

我们需要一个Base64的编码解码的java.jar包

#编码解码工具类

public class TLBase64Util {
   
	public static String encode(String plainText)
			throws UnsupportedEncodingException {
   
		byte[] b = plainText.getBytes("utf-8");
		Base64 base64 = new Base64();
		b = base64.encode(b);
		String s = new String(b);
		return s;
	}

	public static String decode(String encodeStr)
			throws UnsupportedEncodingException {
   
		byte[] b = encodeStr.getBytes("utf-8");
		Base64 base64 = new Base64();
		b = base64.decode
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值