“问题:从基础用户表中随机取出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 intotabletemp_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
insertoverwritedirectory '/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 -cathdfs文件目录本地目录
hadoop fs -cat
/tom/jerry/message_info1/*
/glove/message/msg_info1
注意:msg_info1目录自动生成。
6.写一个脚本,一次性执行十几张表
准备工作
把所有要操作的表的写入一个文件中
目录:/temp/tab_name.txt
程序如下:
后记:
领取专属 10元无门槛券
私享最新 技术干货