抓取数据同步备份hive
1:创建表
CREATE external TABLE `tbl_spider`(
`url` string,
`html` string
) partitioned by (
`site` string,
`dt` string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 'hdfs://aaa-offline/hive/warehouse/tbl_spider';
external 的作用,在drop表时,保留数据文件。
2:构建测试数据
在/home/cphmvp下vim文件 aaas.com 内容如下 两列以\t分割
http://www.aaaa.com/1.html test
构建初始导入
load data local inpath '/home/cphmvp/aaaa.com' overwrite into table tbl_spider partition (site ='aaaa.com',dt='');
3: 查询
select * from tbl_spider where site='aaaa.com';
数据上传备份方案
1: load方式
2:put方式
2.1 判断文件夹是否存在 ,不存在 手动创建
2.2 put上传文件 ,-f(覆盖)(检查是否成功 $?)
2.3 hive加载识别partion
=====================
demo:
1:测试上传
hadoop fs -put aaaa.com hdfs://aaaa-offline/hive/warehouse/tbl_spider/site=aaaa.com/dt=20160719/
建议改成 直接判断
hadoop fs -test -d hdfs://aaaa-offline/hive/warehouse/tbl_spider/site=aaaa.com/dt=20160719
2:判断状态 echo $? 不等于0的话失败 ,尝试创建目录
3:创建目录
hadoop fs -mkdir -p hdfs://aaaa-offline/hive/warehouse/tbl_spider/site=aaaa.com/dt=20160719/
判断状态 echo $? 【注意-p 递归创建目录】
4: 正式上传 hadoop fs -put -f aaaa.com hdfs://aaaa-offline/hive/warehouse/tbl_spider/site=aaaa.com/dt=20160719/
echo $? 【不加说明 都需要结果判断,重试 】 -f 强制覆盖
5: 测试查询
select * from tbl_spider; 发现仍为一条,(需要hive load part)
6: hive 加载partition
hive -e "alter table tbl_spider add partition (site='aaaa.com',dt='') LOCATION 'hdfs://aaaa-offline/hive/warehouse/tbl_spider/site=aaaa.com/dt=20160719';"
echo $0
7:验证数据
select * from tbl_spider;
两天数据
select * from tbl_spider where dt='';
单天数据
整体demo
运行方式:sh parseSpiderLog.sh test aaaa.com all 20160722
【注意字段有所增加,增加了源码类型 ,source_type 不再往上修改,参照即可】
#!/bin/bash
filename="$1"
basepath="hdfs://aaaa/hive/warehouse/tbl_spider/"
site="$2"
source_type="$3"
dt="$4"
if [ $# != ];
then
echo "USAGE:$0 filename site source_type dt"
echo "e.g.: $0 test aaaa.com sj 20160722"
exit ;
fi
outpath=$basepath"site=$site/source_type=$source_type/dt=$dt"
log=$filename."upload_log"
echo "begin to deal logfile $filename "
echo "begin to deal logfile $filename " > $log
echo "outpath hdfs $outpath"
echo "outpath hdfs $outpath " >> $log
sleep
#移除多线程标记
cat $filename|sed 's/ INFO -/\t/g'|sed 's/^\[.*] //g' > $filename.format
#测试上传
hadoop fs -test -d $outpath
if [ $? -eq ];
then
echo 'dir exsit' >> $log
else
hadoop fs -mkdir -p $outpath
echo 'create dir' >> $log
fi
#正式上传
hadoop fs -put -f $filename.format $outpath
if [ $? -ne ];
then
echo 'retry put' >> $log
hadoop fs -put -f $filename.format $outpath
else
echo 'put success' >> $log
fi
#刷新hive加载
HQL="
ALTER TABLE tbl_spider DROP IF EXISTS PARTITION (site='$site',source_type='$source_type',dt='$dt');
alter table tbl_spider add partition (site='$site',source_type='$source_type',dt='$dt') LOCATION '$outpath';
"
hive -e "$HQL"
if [ $? -ne ];
then
echo 'retry alter' >> $log
hive -e "$HQL"
else
echo 'alter hive success' >> $log
fi
if [ $? -eq ];
then
echo 'rm log file' >> $log
rm $filename
rm $filename.format
else
echo 'task fail' >> $log
fi
抓取数据同步备份hive的更多相关文章
- 搭建中小规模集群之rsync数据同步备份
NFS重要问题 1.有关NFS客户端普通用户写NFS的问题. 1)为什么要普通用户写NFS. 2)exports加all_squash. Rsync介绍 什么是Rsync? Rsync是一款开源的.快 ...
- rsync数据同步备份
一.rsync简介 (1)rsync是什么? rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. (2)rsync作用比较 远程拷贝:有点类似ssh的scp ...
- nodejs--实现跨域抓取数据
最近公司安排给我一个任务,抓取页面数据:http://survey.finance.sina.com.cn/static/20205/20131120.html?pid=20205&dpc=1 ...
- java抓取网页数据,登录之后抓取数据。
最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...
- C# WebBrowser控件 模拟登录 抓取数据
参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容 ...
- PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据
From : http://developer.51cto.com/art/200904/121739.htm 下面是一个小例程: ﹤?php// 初始化一个 cURL 对象$curl = curl_ ...
- php中封装的curl函数(抓取数据)
介绍一个封闭好的函数,封闭了curl函数的常用步骤,方便抓取数据. 代码如下: <?php /** * 封闭好的 curl函数 * 用途:抓取数据 * edit by www.jbxue.com ...
- php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。
这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...
- 【转】蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法--不错
原文网址:http://blog.csdn.net/mzy202/article/details/32408223 蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet ...
随机推荐
- Facebook新框架React Native,一套搞定App开发[转]
Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...
- 同台电脑部署多组Tomcat负载均衡(或集群)
可能这种需求比较少见,不过如果手上服务器不够用.可以考虑先这么干着.. 具体Tomcat怎么搭集群,就不在这细说了.只写同台电脑部署多组集群需要修改和注意的地方. 一.Apache 先是Apache, ...
- TCP/IP具体解释--nagle算法和TCP_NODELAY
在client一直给server发送小数据的时候,接受到一个回应会在非常长的时间以后,可是将多个小数据写操作合并成一个写操作,问题就没了. 这个事件的缘由可能是TCP_NODELAY的原因 如今大概明 ...
- 用AsyncTask实现多线程
前言 在Android应用开发中,有时我们需要实现任务的同步.Android里的AsyncTask类可以帮我们更好地管理线程同步(异步方式),就像Thread类能做的,不过用法比Thread更简单. ...
- 【Android进阶】Activity的四种加载模式
Activity的四种加载模式: 1.standard :系统的默认模式,一次跳转即会生成一个新的实例.假设有一个activity命名为Act1, 执行语句:startActivity(new Int ...
- liunx tomcat多站点配置
<Host name="nav" debug="0" appBase="webapps" unpackWARs="true ...
- Snail—ORACLE基础之事务学习(五)
---------------事务---当运行到commit时 事务才算是完毕,不然 会运行rollback操作. declare v_money acount.money%type:=1223; e ...
- JMS分布式应用程序异步消息解决方案EhCache
高速缓存同步问题
部分博客中描述的使用拦截器怎么用EJB公布的WebService加入缓存,这样能够提高WebService的响应效率.但是即使是这样做,还是要经历网络的传输的.于是决定在调用WebService的程序 ...
- Java实现 Base64、MD5、MAC、HMAC加密(转)
开始对那些基本的加密还不怎么熟练,然后总结了些,写了一个测试:支持 Base64.MD5.MAC.HMAC加密,长话短说,我们都比较喜欢自己理解,看代码吧! 采用的输UTF-8的格式... packa ...
- Cocos2d-x 3.2 Lua演示样本CocosDenshionTest(音频测试)
Cocos2d-x 3.2 Lua演示样本CocosDenshionTest(音频测试) 本篇博客介绍Cocos2d-x 3.2中Lua演示样例的音频測试.Cocos2d-x使用SimpleAudi ...