微博ETL项目分析
一、数据格式
文件格式
Txt
Csv’
Xls
Doc

数据结构格式
Html格式,既是一个文件格式,也是一个数据结构格式
Json格式:kv对
Xml格式:一个根标签,和一堆子标签
二、输入和输出
输入:
房地产评论主题下的对应的用户基本信息文件集和评论内容文件集,两者之间是通过用户id关联的。
通过一定的java程序设计做数据解析、结构化、各自合并成一个文件即可方便load到hive中。
输出:(两张表,一个用户表,一个评论内容表)
将两个类别下各自对应的文件集,进行解析、结构化。
通过load语法,将数据分别导入到两张表当中。
三、主要思路与考点
主要思路
通过javase+maven解决数据解析、结构化到一个文本文件的目标。
通过hive load语法将数据加载入数据仓库管理。
注意数据仓库的研发思路和开发步骤拆解,做到功能实现、目录清晰易懂。
主要考点
数据仓库的目录结构和开发规范
JavaSe程序设计基础
面向对象程序设计‘
Maven项目构建和开发
Xml数据解析
正则表达式
四、Hive项目之微博数据ETL项目
该项目标准流程
1、 项目概述
2、 需求分析
3、 开发步骤
4、 代码实现与风险控制
5、 Bug修复、调优、上线
流程落地
1、 项目概述
基于给定的微博用户和博文数据,经过javase解析、结构化、数据仓库ETL处理得到两张可以通过用户id进行关联的表。
2、 需求分析
可行性分析:一定是可行的。
前置条件
输入:单个微博数据目录,其中包含微博用户数据和博文数据两部分。
处理:JavaSe解析数据形成两个类型的结构化文件,然后通过ETL操作,加载到Hive表当中。
输出:通过SQL查询,给定任意的用户ID,得到其对应的个人信息和博文信息。

3、 开发步骤
1、 数据文件读取问题
2、 数据解析-用户数据解析,形成结构化数据。即java的对象形式。
3、 数据解析-博文数据解析,形成结构化数据,同上。
4、 将结构化数据落地到txt文件当中。
5、 将开发环境的结构化数据生成项目,部署到入口机上。
6、 将在入口机上生成的txt文件,进行hive仓库化操作。
1) 四大金刚结构。
2) 通过脚本化的方式解决方式,而不是直接使用hive cli模式。
7、代码实现与风险控制
1、数据文件读取问题
Java io

8、Bug修复、调优、上线

4、 代码实现与风险控制
5、 Bug修复、调优、上线
文件乱码剖析
乱码原因:编码和解码不是一个值,或者说不兼容。
如何解决:将编码和解码进行同一兼容。
抽象的层次说明
抽象方法
抽象类别
抽象项目
抽象系统
抽象方法的般步骤

  1. 先写测试类,把技术问题解决掉。
  2. 将测试类中的静态变量进行参数化处理。
  3. 确定方法的修饰范围,是成员方法,还是静态方法。
    成员方法的判断依据:如果该方法需要方法外部,类内部的某些依赖,则用成员方法,若无外部依赖,自己可独立使用,应该使用静态方法。
    4.测试调优即可。
    StringBuilder和StringBuffer的区别和联系
    联系:可以做字符串拼接
    区别:StringBuilder是线程不安全的,所以IO效率更高
    StringBuffer是线程安全的。IO效率低
    何为线程安全
    方法可重入性:如果一个方法,不管什么时候、多少个线程去调用,都是安全的,不影响最终结果,则称为方法是可重入的。
    关于正则表达式
  4. javase这则处理核心类
    Pattern:建立正则匹配模式引擎
    Matcher:用于正则引擎匹配完数据源之后的匹配器
  5. 匹配模式
    Matches:全量匹配
    lookingAt:从头往后匹配
    find:任意位置匹配均可以

五、将代码部署到生产环境:
四大金刚:udf、deal、create、config

找到代码maven install 打包
然后打开 xshell

Cd hive
Cd test
创建一个目录:
Mkdir weibo_data_etl
Cd weibo_data_etl
然后创建四个目录:
config
create
deal
udf

进入到udf中:cd udf
rz -bye WeiboDataStruct-jar-with-dependencies.jar

然后回到 deal目录:
Cd …/deal/
然后
rz -bye 房地产.zip
解压:
Unzip 房地产.zip

(改名字的命令:mv a b

如:mv 123 房地产:将123改名为房地产)

最后执行java -jar …/udf/WeiboDataStruct-jar-with-dependencies.jar fangdichan

查看文件中的内容命令:more 1580368313.txt

rm -rf fangdichan 删除这个

拷贝文件到本地目录sz 2322382161.txt

若执行使用java -cp的形式:java -cp …/udf/WeiboDataStruct-jar-with-dependencies.jar com.tl.job009.controller.SystemController fangdichan

在deal中,执行java -jar生成txt文件
在deal目录下 :touch prepare_4_weibo_data.sh
然后在deal目录下进入到 prepare_4_weibo_data.sh
vi prerare_4_weibo_data.sh


然后 sh prepare_4_weibo_data.sh

在create中创建数据表
cd …/create/:在create中创建表weibo_user_info.sh和weibo_content_info.sh。
touch weibo_user_info.sh。
编辑weibo_user_info.sh
Vi weibo_user_info.sh:
因为将外部数据导入表中的,所有一定是外表

然后生成表:sh weibo_user_info.sh。

编辑weibo_content_info.sh
Vi weibo_content_info.sh


然后生成表:sh weibo_content_info.sh。

在deal中,将txt文件数据导入表中
在deal中创建:load_data_to_weibo_user_info.sh
touch load_data_to_weibo_user_info.sh
编辑:vi load_data_to_weibo_user_info.sh

执行:
sh oad_data_to_weibo_user_info.sh。

在deal中创建:load_data_to_weibo_content_info.sh
touch load_data_to_weibo_content_info.sh
或者: cp load_data_to_weibo_user_info.sh load_data_to_weibo_content_info.sh
编辑:vi load_data_to_weibo_content_info.sh


完成!!!

六、优化一下步骤

在create中创建一个入口
touch b_main.sh
vi b_main.sh

在deal中创建一个入口
touch a_main.sh
vi a_main.sh


以后执行的时候,直接执行这两个入口就可以了。
先执行:sh b_main.sh
再执行: sh a_main.sh
七、注意事项:
1、乱码问题
建表后需要在hive中改变一下字符编码为GBK的形式,(因为传入的数据的格式为GBK格式的)

在hive中修改表的编码格式:alter table weibo_content_info set serdeproperties(‘serialization.encoding’=‘GBK’)

alter table weibo_user_info set serdeproperties(‘serialization.encoding’=‘GBK’)

然后改一下xshell属性—>终端—>编码为:utf-8;
然后导入数据

2、Dom4j解析xml对一些特殊符号的处理:

hive项目之微博ETL项目总结分析相关推荐

  1. Hadoop+hive+flask+echarts大数据可视化项目之hive环境搭建与系统数据的分析思路

    Hadoop+hive+flask+echarts大数据可视化项目(四) --------------hive环境搭建与系统数据的分析思路---------------- 关注过Hadoop+hive ...

  2. HIve数仓新零售项目DWD层的构建

    HIve数仓新零售项目 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统 ...

  3. 最新《海牛的Mysql+java+javase+hadoop+ETL项目》

    教程内容: 本套大数据ETL项目视频课程紧密结合企业实战,是海牛大数据首套公开的项目视频,旨在帮助大数据小白自学,理论与操作结合.快速入门,加强对大数据技术的认知和学习. 项目视频内容包括:大数据使用 ...

  4. 大数据项目之_15_电信客服分析平台_0102_项目背景+项目架构+项目实现+数据生产+数据采集/消费(存储)

    大数据项目之_15_电信客服分析平台_01&02 一.项目背景 二.项目架构 三.项目实现 3.1.数据生产 3.1.1.数据结构 3.1.2.编写代码 3.1.3.打包测试 3.2.数据采集 ...

  5. python上网行为分析_python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为...

    python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为 谷歌浏览器的历史浏览记录存储在名为History sqlite文件中,在mac环境下,该文件的地址是 /Users/zha ...

  6. 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架

    一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...

  7. Spark项目模拟——航班飞行网图分析

    文章目录 Spark项目模拟--航班飞行网图分析 需求描述 数据准备 需求思路整理 代码实现 总结 机场数量: 航线数量: 最大的边属性: 哪个机场到达航班最多: 找出最重要的飞行航线: 找出最便宜的 ...

  8. java微博源码_基于jsp的微博-JavaEE实现微博 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的微博, 该项目可用各类java课程设计大作业中, 微博的系统架构分为前后台两部分, 最终实现在线上进行微博各项功能 ...

  9. 项目01城市餐饮店铺选址分析

    一.项目要求 1.从三个维度"口味"."人均消费"."性价比"对不同菜系进行比较,并筛选出可开店铺的餐饮类型 要求: ① 计算出三个维度的指 ...

最新文章

  1. 苹果首席设计官离职!这个被称为“强纳肾”的男人,设计了iMac、iPhone等无数产品...
  2. 控件不支持html5,javascript – HTML5视频控件不起作用
  3. Array Stabilization
  4. Why product sales area is not replicated to CRM
  5. html文件上传添加额外参数,bootstrap-fileinput组件在上传时传递额外参数
  6. ado.net操作数据库
  7. zookpeer实现对服务器动态上下线的监听
  8. mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼
  9. Windows 动态链接库
  10. npm 安装 -D 和-S的区别
  11. linux下安装yum命令
  12. 小米招股书披露:员工平均年薪福利28万!
  13. 迷宫里抓神兽Java游戏_塞尔达传说荒野之息全神兽迷宫进入方法 四大神兽怎么打?-游侠网...
  14. Disk for DB is too low. Cassandra state detected DOWN. Disk space for DB not retrievable
  15. wav转mp3格式转换器哪个好
  16. 网络时代人物标签(两种)
  17. 可缩放矢量图形svg
  18. python学习-day15:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r...
  19. json表格显示js方法_将JSON导入Google表格的3种最佳方法[最终指南]
  20. 【HTML总复习】一文带你查漏补缺,暖你一整天

热门文章

  1. 《Investigating Typed Syntactic Dependencies for TSC Using GAT》论文笔记
  2. 【CSS 遮挡和剪切属性 Masking】
  3. 一个初创企业的“生还”记录
  4. 剑指offer面试题2:实现单例模式
  5. 三星修复软件+连接三星认证服务器,三星云服务从2月6日起不再支持第三方应用程序数据备份...
  6. 用vue3.0.1如何搭建仿京东的电商H5项目呢?本文实战教你
  7. python智慧城市_智慧城市背景下Python机器学习项目实战案例分享
  8. 搭建mysql注入_常见的sql注入环境搭建
  9. 分享 java 基础 + 进阶精简资料(视频 + 源码 + 就业项目 + 面试报装)
  10. win7系统如何搜索计算机,win7怎样搜索文件?win7系统准确搜索文件的方法