搭建实时数据仓库-微博博文实时数据分析项目说明书PRD以及问题疑难问题解决思路

  1. 项目说明
    根据采集工程师实时爬取到的微博数据,实时传输到数据接收服务平台,形成微博博文数据,构建,基于该微博平台实时数据的相应数据仓库,同时做好相应的数据监控工作,用于及时发现数据潜在问题,例如数据暴增骤减等情况,以及其他潜在数据开发需求

具体需求说明

  1. 构建实时数据流仓库
    以小时为单位,构架小时级的实时数流数据仓库
  2. 数据监控工作
    以天和小时数据为维度,来做数据记录数据维度的分钟级,小时级,天级监控,最后通过echarts进行实时变化的曲线图,进行可视化展示

Product Requirement Docunment
从业务逻辑角度,讲清楚,如何做,
持续提供具有时间连续性,时间有序性的数据流,文章总数不低于100w条,实际给出2.2亿条数据
数据格式:csv
在这里插入图片描述

将数据流纳入实时数据流疫情处理分析,得到如上需求所需要的数据源
将实时数据流落地,攻坚hive微博小时级实时数据仓库
并对试试数据流进行分钟级,小时级别,天级别的监控,将数据实时上报到关系型数据库
将数据推送到mysql/hbase指定表格中
搭建java web项目,在前段页面中调用后端数据接口,将数据返回到前端中
在前段调用绘图插件,并展示
明确阶段目标和验收标准
风险控制与过程管理
2需求说明书
在这里插入图片描述

3.技术方案
在这里插入图片描述

4.技术问题
1.Linux curl :简易无头浏览器,使用curl + url地址直接请求
2.http get和post请求的区别
Get是通过http header传递的,存在数据大小的限制,默认最大是64k,而且是明文可以捕捉,post是http data主题传输,不存在数据大小限制,而且是隐式传递,更安全一些
3.linux解决数据循环读取问题
在这里插入图片描述

4.url base64乱码问题
在这里插入图片描述

Maven依赖,注意导包导入apache.commons的包,不要导入util的包

commons-codec commons-codec 1.10

Maven中依赖管理
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
at store.wtx.UrlBase64Util.encode(UrlBase64Util.java:7)
at store.wtx.ConsoleReadManager.main(ConsoleReadManager.java:17)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
打包时仅仅只打了源码包,依赖没有打导致的缺失依赖,配置一下 即可在这里插入图片描述

<!-- 项目构建配置 -->
<build>
	<finalName>Base64Util</finalName>
	<plugins>
		<plugin>
			<artifactId>maven-assembly-plugin</artifactId>
			<configuration>
				<descriptorRefs>
					<descriptorRef>jar-with-dependencies</descriptorRef>
				</descriptorRefs>
			</configuration>
			<executions>
				<execution>
					<id>make-assembly</id>
					<phase>package</phase>
					<goals>
						<goal>assembly</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
		<plugin>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.3.2</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
				<encoding>UTF-8</encoding>
			</configuration>
		</plugin>
	</plugins>
</build>

5.linux输出重定向问题
管道符+awk 或者while read line;do echo done
当要读取控制台系统输出的时候,如果不是完整一行,或者说是标准一行,会造成awk等工具处理的等待,其需要等待标准一行的输入,才可以处理
所以不管是重定向>到文件中还是|wc -l都无法读取
在这里插入图片描述

Base64处理完后一定要println处理
在这里插入图片描述

如果是print处理,则都不是完整一行无法处理

6.url请求问题
curl -X POST --data-urlencode “data=$data” $receiver_service_url
标准http请求要用data-urlencode数据格式而不能用data-ascii编码,这样会导致乱码,默认是使用urlencide编码在这里插入图片描述

7.shell截取字符串问题
创建变量,使用变量:0:1截取,一个冒号是要第一个变量,两个冒号是要字符下标从几开始到几结束的值
如此问题解决

5.技术栈总结
Java base64(apach-commen)
Java KafkaAPI
Hadoop Hive
Spring-boot
Linux:技术栈

  1. curl 无头浏览器

  2. awk编程 |awk -F ‘\001’ {‘print $x’} 如果有按照规则切分则 $x为第几个变量,如果没有切分则$0就是全部本行输出

  3. ${变量❌x}变量截取字符串

  4. 循环读取控制台输出:while read line;do echo $line done

  5. 判断文件是否存在: if [ -f “./data.txt” ];then fi
    在这里插入图片描述

  6. 输出重定向
    “>” :输出重定向的一个文件,覆盖原来的文件
    “>>”:输出重定向到一个文件,追加到原来的文件
    标准 输出 重定向
    1> 等于 >
    当输入的命令是错误的日志时,不会重定向到指定文件
    错误输出重定向:
    2> :把错误的输出日志重定向到指定文件里,正确的不会
    输出到黑洞
    ls >/dev/null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值