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. React Native是一套使用 React 构建 Native app 的编程框架

    React Native是一套使用 React 构建 Native app 的编程框架 React Native at first sight what is React Native? 跟据官方的描 ...

  2. (五岁以下儿童)NS3样本演示:桥模块演示样品csma-bridge.cc凝视程序

    (五岁以下儿童)NS3:桥模块演示样品csma-bridge.cc凝视程序 1.Ns3 bridge模csma-bridge.cc演示示例程序的目光 // Network topology // // ...

  3. HDU 1061 Rightmost Digit解决问题的方法

    求大量N^N的值最右边的数字,即最低位. 它将能够解决一个简单二分法. 只是要注意溢出,只要把N % 10之后.我不会溢出,代替使用的long long. #include <stdio.h&g ...

  4. 【C语言探索之旅】 第二部分第六课:创建你自己的变量类型

    内容简介 1.课程大纲 2.第二部分第六课: 创建你自己的变量类型 3.第二部分第七课预告:   文件读写 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

  5. angular input使用输入框filter格式化日期

    最近使用angular日期选取器.只需要把所选的输出迄今input输入框,根据默认的假设,显示是在时间的形式的时间戳.不符合规定.需要格成一个特定的公式格公式.但input上ng-model不能直接对 ...

  6. ramoops具体失败原因来解释驱动寄存器

    正在使用linux的ramoops驱动器模块,当编译完成加载.查找驱动程序加载失败.显然,直接用内核代码,为什么会出现这种情况? 第一眼ramoops初始化代码: 180 static int __i ...

  7. 我有DIY一Android遥控-所有开源

    我有DIY一Android遥控-所有开源 1.试用 记得宋宝华在「设备驱动开发具体解释」提出一个这种理论「软件和硬件互相渗透对方的领地」,这次证明还是确实是这样,使用上层APP软件加上简单的更为简单的 ...

  8. 设计Kafka的High Level Consumer

    原文:https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example 为什么使用High Level Consumer ...

  9. Android CTS測试Fail项改动总结(四)

    Android5.1上的測试 1.android.security.cts.SELinuxDomainTest# testInitDomain fail 打印的log junit.framework. ...

  10. vs2013提交github代码

    vs2013的新特性之一就是可以方便的通过集成的git工具管理git代码.今天简单给大家演示 在github新建仓库 复制仓库地址 克隆仓库到本地(这一步非常重要,只有顺利获取github的code, ...