准备工作:
1,在 hive 中创建一个数据库
create database htest;
use htest;
2,创建 user 表
create table if not exists `user` (
uid string,
province int,
gender string,
verified boolean
)
row format delimited
fields terminated by ','
stored as textfile;
3,向表中加载数据
load data local inpath
'/home/hadoop/testdata/userdata.csv' into table `user`;
4,创建 weekly 表
(从https://github.com/ogrodnek/csv-serde/downloads上下载csv-serde-1.1.2.jar包
把这个jar包上传到hive下的lib目录里)
先将读取 csv 格式文件作为表数据源的 Jar 包添加到 classpath
中:
add jar /home/hadoop/testdata/csv-serde-1.1.2.jar;
create table if not exists weekly (
mid string,
retweeted_status_mid string,
uid string,
retweeted_uid string,
source string,
image int,
text string,
geo string,
created_at timestamp,
deleted_last_seen timestamp,
permission_denied string
)
row format SERDE 'com.bizo.hive.serde.csv.CSVSerde'
stored as textfile;
5,向 weekly 表中加载数据
load data local inpath '/home/hadoop/testdata/week.csv'
into table `weekly`;
6,创建表 province(保存省份编号与名字的对照关系)
create table if not exists provinces (
province int,
provincename string
)
row format delimited
fields terminated by '\t'
stored as textfile;
7,导入数据到 provinces
load data local inpath
'/home/hadoop/testdata/provinces.txt' into table
provinces;
user示例:
1、uid:用户ID
2、province:省级行政区编号
3、gender:性别
4、verified:VIP状态(是否为“大V”用户)
week示例:
1、mid:消息ID
2、retweeted_status_mid:如果消息是转发的,则该字段表示原始消息的ID;如果消息是原创的,该字段为空。
3、uid:用户ID 4、retweeted_uid:如果消息是转发的,则该字段表示原消息的用户ID;如果消息是原创的,该字段为空。
5、source:消息发送者使用的客户端 6、image:是否有图(1表示有图,0表示无图)
7、text:消息内容(注:如果消息内容中存在@XXX,则已经将其替换为相应的用户ID) 8、geo:地理信息
9、created_at:消息的发布时间
10、deleted_last_seen:如果用户删除了该消息,则该字段表示删除前最后被显示的时间;否则该字段为空
11、permission_denied:无法访问的微博(如已经被用户删除等原因)
provinces.txt:
11 北京
12 天津
13 河北
14 山西
15 内蒙古
21 辽宁
22 吉林
23 黑龙江
31 上海
32 江苏
33 浙江
34 安徽
35 福建
36 江西
37 山东
41 河南
42 湖北
43 湖南
44 广东
45 广西
46 海南
50 重庆
51 四川
52 贵州
53 云南
54 西藏
61 陕西
62 甘肃
63 青海
64 宁夏
65 新疆
71 台湾
81 香港
82 澳门