微博数据ETL
项目角色: 核心研发 开发组人员: 3
工作内容:
通过javase解析、结构化源数据并load到hive数据仓库中,并使用hivesql、数据分析函数进行活跃度、影响力排行等分析工作。
一、项目简介:
这个项目是自己在实习期间参与的第一个项目,我们的数据来源于
公司内部的爬虫部门,整个ETL过程是自己手写的UDF函数完成的
涉及到IO读取,正则匹配,以指定格式输出(利用面向对象的思
想,将指定的格式封装成对应的属性的对象,List),我们当时的研
究对象是新浪微博数据的一个主题下的评论区的内容,经过这个过
程呢,格式化就结束了,加载到数据仓库中,这个ETL过程就算初
步OK了。
二、相关内容
1.javase部分
解决项目的基层java开发部分的目录要搭建好:
咱们这个里面也是四层Controller、Manager、Pojos、Utils
挨个解决完成所要起到的功能
先从基层搭起来:我们要读文件,那么Utils里必有IOUtil
问题来了,读文件,文件从哪来,从传过来的路径来
那么路径里面的文件呢,所以还要搞一个拿出路径下所有
文件的FileOperatorUtil类
那么就来具体搞一搞看看咋搞这个FileOperatorUtil类
代码奉上:
public static List
if(FilePath==null||FilePath.trim().length()==0){
System.out.println("输入路径不存在");
return null;
}
File filepath=new File(FilePath) ;
List
if(filepath.isDirectory()){
//对filepath进行遍历,默认的给我遍历allfile去了
for (File file : filepath.listFiles()) {
allFile.addAll(getrAllFileFromFolder(file.toString()));
}
}else
{;
allFile.add(filepath.toString());
}
return allFile;
}
精髓就在这句红色话,我在这儿错了好几次了:
allFile.addAll(getrAllFileFromFolder(file.toString()));
好的,到此,这个方法就算是搞定了
搞到这里就该要考虑后面的问题了,整出来了文件还不行,这文件很特殊啊,
文件的名字都是由uid构成的,所以拿到info文件和comment文件的关系就从uid入手啊
解决名字问题那就写个只拿出来名字的方法呗
//咱们要拿出文件夹里面的uid,所以要去掉名字里面的txt
public static String getAllFileNameWithoutTXT(String inputpath){
return new File(inputpath).getName().split("\\.")[0];
}
技惊四座啊,兄弟 直接一句话搞定,调用file的getname方法拿到文件名
然后切割只要 . 前面的就把txt给去掉了
到此,FileOperatorUtil算是初步完成了,如果还有别的需要补充的问题,再继续修整
其余的地方呢,比较经典的代码部分就应该是IOUtil类中,向指定文件写出一个list集合形式呢内容到其中,贴一下
//将读进来的不规则的形式对象要写出到文件中,所以要有向文件写的方法
public static void writeListContentToFile(List
//将拿出来的内容写入到具体的文件中去
OutputStream os=new FileOutputStream(outputpath);
OutputStreamWriter osw=new OutputStreamWriter(os,charset);
BufferedWriter bw=new BufferedWriter(osw);
int counter=0;
for (String string : list) {
if(counter>0){
bw.newLine();
}
bw.write(string);
counter++;
}
bw.close();
}
(1)load数据的sql语句:
load data local inpath inpathname overwrite into table tablename;
(2)hivesql与mysql的区别
在sql语句方面:hive中不支持delete和update等操作
(3)名词解析
活跃度:一般是指线上产品的用户在线时长以及登录频次
影响力:影响力是用一种别人所乐于接受的方式,改变他人的思想和行动的能
力。
(4)关于ETL工具
了解过 kettle,但是并未有过具体使用。
业界最有名的开源ETL工具。开源当然就免费,免费的有些东西使用就不是很方便
下载地址:http://kettle.pentaho.com/
三、涉及的坎儿
1.里面涉及到的转换
2.这里面用到了hive,优化hive
3.用索引应该怎么用,索引的几种建立方式
命令行-自查
常用的两种索引创建方式:
(1)CREATE INDEX index_name ON table_1(filed_1);
(2)ALTER TABLE table_1 ADD INDEX(field_1);
区别
1.使用CREATE创建索引必须提供索引名称,而ALTER方式可以不提供则MySQL会自动为你创建索引名称,如果想使用ALTER方式自定义创建索引名称,可以类似如下SQL语句:
1.mysql> ALTER TABLE table_1 ADD INDEX index_name(field_1,field_2);
2.CREATE 方式创建索引,一次只能创建一个索引。ALTER方式可以一次创建多个索引,类似如下SQL语句:
mysql> ALTER TABLE table_1 ADD PRIMARY KEY(id), ADD INDEX index_name_1(field_1,field_2), ADD IND
web ui client 创建
里面有个设计表,就可以建立索引了
4.数据重跑及相关的东西
---------后续待继续学习补充,