暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

hive业务总结1

数据与共享 2018-02-08
182

 问题:从基础用户表中随机取出10万基础用户的id和phone号码,然后关联大数据中心的十几张表,取出其匹配数据,每一个表对应一个文件,并且将文件从hdfs导出到本地系统,很简单的一个提数操作,做的时候却遇到许多坑,当然事后也有进步。话不多说,开始操作。

1.创建临时表 temp_users

create table temp_users(id string, phone string ) row format dellimited fields

terminated by ',' stored as textfile;

2. 从基础用户表随机取出10万用户

insert  into table temp_users select id,phone from userinfos where partion_flag= '201218' order by rand() limit 100000;

3.在hdfs系统创建目录

此处就稍微卡了一下,对shell命令不熟悉。

列出hadoop所有的文件目录:

       hadoop fs -ls

选择一个有权限的目录

       hadoop fs -mkdir tom/jerry

4.sql语句的方式导入到hdfs文件系统

将执行结果存放到tom/jerry目录下

数据表:message_info1

insert overwrite directory '/tom/jerry/message_info1'

row format delimited fieldss terminated by ','

selet a.id ,b.* from temp_users a

left join message_info1 b on a.id=b.id;

注意:message_info1系统自动生成

5.将文件导出到本地文件系统

格式:hadoop fs -cat  hdfs文件目录   本地目录

hadoop fs -cat 

/tom/jerry/message_info1/* 

/glove/message/msg_info1

注意:msg_info1目录自动生成。

6.写一个脚本,一次性执行十几张表

准备工作

把所有要操作的表的写入一个文件中

目录:/temp/tab_name.txt

程序如下:


后记:



文章转载自数据与共享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论