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的更多相关文章

  1. 搭建中小规模集群之rsync数据同步备份

    NFS重要问题 1.有关NFS客户端普通用户写NFS的问题. 1)为什么要普通用户写NFS. 2)exports加all_squash. Rsync介绍 什么是Rsync? Rsync是一款开源的.快 ...

  2. rsync数据同步备份

    一.rsync简介 (1)rsync是什么? rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. (2)rsync作用比较 远程拷贝:有点类似ssh的scp ...

  3. nodejs--实现跨域抓取数据

    最近公司安排给我一个任务,抓取页面数据:http://survey.finance.sina.com.cn/static/20205/20131120.html?pid=20205&dpc=1 ...

  4. java抓取网页数据,登录之后抓取数据。

    最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...

  5. C# WebBrowser控件 模拟登录 抓取数据

    参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容 ...

  6. PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据

    From : http://developer.51cto.com/art/200904/121739.htm 下面是一个小例程: ﹤?php// 初始化一个 cURL 对象$curl = curl_ ...

  7. php中封装的curl函数(抓取数据)

    介绍一个封闭好的函数,封闭了curl函数的常用步骤,方便抓取数据. 代码如下: <?php /** * 封闭好的 curl函数 * 用途:抓取数据 * edit by www.jbxue.com ...

  8. php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。

    这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...

  9. 【转】蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法--不错

    原文网址:http://blog.csdn.net/mzy202/article/details/32408223 蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet ...

随机推荐

  1. 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法

    JS语法集锦(三) 窗口/滚动条/文本 alert("文本")    警告框:警告框经常用于确保用户可以得到某些信息,当警告框出现后,用户需要点击确定按钮才能继续进行操作. con ...

  2. Could not drop object &#39;student&#39; because it is referenced by a FOREIGN KEY constraint

    1. Find foreign keys SELECT * FROM sys.foreign_keys WHERE referenced_object_id = object_id('Student' ...

  3. App如何选择移动广告平台,开发者2 - 移动变现模式分析

    开发人员社区的上述分析.它可能无法覆盖全部,但是,每一个开发者都需要根据自己的特点变现模式选择.继App流动性模式做了全面的分析. 游戏.广告.电商是互联网的三种变现模式,移植到移动互联网也相同适用. ...

  4. UBuntu经常使用的操作(网络资源)

    http://docs.google.com/Doc? id=dqsbw4c_46d89djccr 版权声明:本文博主原创文章.博客,未经同意不得转载.

  5. 2014 I/O返回:Google连接一切

    文/蒋涛 6月.WWDC 2014与Google I/O  (大部分演讲视频都公开.Youtube须要FQ.很值得一看)相继召开. 今年是我第三年參加Google I/O大会.三年间,Google积累 ...

  6. SDL2来源分析3:渲染(SDL_Renderer)

    ===================================================== SDL源代码分析系列文章上市: SDL2源码分析1:初始化(SDL_Init()) SDL2 ...

  7. MEMO:UIButton 中的图片和标题 左对齐

    UIButton setImage 和 setTitle之后.默认 image和title 对齐居中, 因为 title 长度不固定. 所以假设要几个这样有image有title的button纵向排列 ...

  8. UVA 257 - Palinwords(弦HASH)

    UVA 257 - Palinwords 题目链接 题意:输出一个文本里面的palinword,palinword的定义为.包括两个不同的回文子串,而且要求回文子串不能互相包括 思路:对于每一个单词推 ...

  9. WPF学习(9)样式和行为

    在asp.net世界中,我们的美工人员会为我们准备好静态页面,它注意包括三个部分:html.css和js.而在WPF世界里,也同样有着类似这三个部分的静态页面:Xaml.Style和Behaviors ...

  10. [Erlang危机](4.5)第四章练习

    原创文章.转载请注明出处:server非业余研究http://blog.csdn.net/erlib 作者Sunface 联系邮箱:cto@188.com Exercises 练习 Review Qu ...