WHAT:
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类SQL查询语言,称为 HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hive在hadoop生态圈中属于数据仓库的角色。他能够管理hadoop中的数据,同时可以查询hadoop中的数据。本质上讲,hive是一个SQL解析引擎。Hive可以把SQL查询转换为MapReduce中的job,然后在Hadoop上运行。
1.先将数据在linux上准备好
[xc2046@master weibo]$ ls | head -5
1387159770_1087770692_20100101000000_VCSvoMgPvrSTKhCkkIA7uMV9Hn10877706927159770ouss.json
1387159770_1180721740_20100101000000_tBx94gQvEoOWTiB4n3gORSmS11807217407159771ouss.json
1387159770_1188552450_20100101000000_znd6GvsYWidTvSK60Y11885524507159771ouss.json
1387159770_1189591617_20100101000000_wsk5oo2KMEptcpLhkh18iWQkg11895916177159771ouss.json
1387159770_1191220232_20100101000000_K4JxjIcRFe0loKi11912202327159770ouss.json
[xc2046@master weibo]$ pwd
/home/xc2046/weibo
2.将该数据文件夹上传至HDFS根目录
[xc2046@master weibo]$ hadoop fs -put /home/xc2046/weibo /
- 在WebUI上查看文件是否上传成功
3.上传成功后,CLI启动hive,创建hive外部表,(Location指向就是刚刚HDFS文件位置)
hive> CREATE EXTERNAL TABLE if not exists weibo(json string)
>COMMENT 'This is the quova ASN source json table'
>LOCATION '/weibo';
OK
Time taken: 0.348 seconds
4.创建好外部表后,查看一下。已存在名为weibo的表
hive> show tables;
OK
city_info
cityid2clickaction
comment_source
day1
nongchanpin
product_info
test
test111
tmp_area_fullprod_click_count
tmp_area_product_click_count
tmp_click_product_basic
u_c_s
user_count
user_info
user_visit_action
weibo
weibo_all
Time taken: 0.057 seconds, Fetched: 17 row(s)
5.用hive提供的HQL做一下简单查询验证数据是否全部准备好
hive> select * from weibo limit 1;
OK
[{"beCommentWeiboId":"","beForwardWeiboId":"","catchTime":"1387159495","commentCount":"1419","content":"分享图片","createTime":"1386981067","info1":"","info2":"","info3":"","mlevel":"","musicurl":[],"pic_list":["http://ww3.sinaimg.cn/thumbnail/40d61044jw1ebixhnsiknj20qo0qognx.jpg"],"praiseCount":"5265","reportCount":"1285","source":"iPad客户端","userId":"1087770692","videourl":[],"weiboId":"3655325888057474","weiboUrl":"http://weibo.com/1087770692/AndhixO7g"}]
Time taken: 0.102 seconds, Fetched: 1 row(s)