从基础用户表中随机取出10万基础用户的id和phone号码,然后关联大数据中心的十几张表,取出其匹配数据,每一个表对应一个文件,并且将文件从hdfs导出到本地系统,很简单的一个提数操作,做的时候却遇到许多坑。
问题处理:
create table temp_users(id string,phone string ) row format dellimited fields terminated by ',' stored as textfile;
insert into table temp_usersselect id,phone from userinfos where partion_flag= '201218' order by rand() limit 100000;
# 列出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 aleft join message_info1 b on a.id=b.id;
5.将文件导出到本地文件系统
# 格式:hadoop fs -cat hdfs文件目录 本地目录hadoop fs -cat /tom/jerry/message_info1/* /glove/message/msg_info1# 注意:msg_info1目录自动生成。
6.批量执行十几张表
1.将要操作的所有表名写入文件:/temp/tab_name.txt2.执行下列脚本:test.shcat /temp/tab_name.txt | while read idobeeline -e "insert overwrite directory '/tom/jerry/${i}'row format delimited fieldss terminated by ','selet a.id, b.* from temp_users aleft join (sleect *from ${i} where partion_flag= '201218') bon a.id=b.id;"sleep 2hadoop fs -cat /tom/jerry/s{i}/* > /glove/message/s{i}waitdone## '>'重定向符号,将${i}/*下的文件进行整合


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




