需求:
由于我们用的阿里云Hbase,按存储收费,现在需要把kafka的数据直接同步到自己搭建的hadoop集群上,(kafka和hadoop集群在同一个局域网),然后对接到hive表中去,表按每天做分区

一、首先查看kafka最小偏移量(offset)

/usr/local/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.1.210: -topic test --time - (--time -1为查看kafka最大偏移量)
test::
test::
test::

显示三个partition最小offset都为0,这样的话我们可以直接从kafka把数据迁移到HDFS上面

还有另外一种情况:

如果最小offset不为0,需要先把hbase上面的数据导入到HDFS上,再把offset设置为之前存放在zookeeper上面的offset

方法:

). 首先查看存放在zookeeper上面的offset
/usr/local/zookeeper/bin/zkCli.sh -server 192.168.1.210:
#] get /consumers/test_group/offsets/test/ cZxid = 0x10050df5c
ctime = Wed Sep :: CST
mZxid = 0x100691806
mtime = Thu Nov :: CST
pZxid = 0x10050df5c
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =
). 把导入到Hbase的sparkstreaming任务kill掉,然后把hbase的数据全部导入到HDFS上
). 然后编写导入到HDFS上面的spark代码,设置相同的group_id,则会读取之前存放在zookeeper中的offset

二. 把数据导入到HDFS上面(实现代码不在这里作展示)

我这边保存的文件以日期为命名格式(每天凌晨执行一次,在sparkstreaming里面设置)
hdfs dfs -ls /data/res/
drwxr-xr-x - hadoop hadoop -- : /data/res//part-
drwxr-xr-x - hadoop hadoop -- : /data/res//part-
drwxr-xr-x - hadoop hadoop -- : /data/res//part-

三. 把数据进行getmerge,获取每天的数据,然后导入到hive表中去

实现shell脚本,每天凌晨1点跑,下面按天分割文件,主要是防止当天会掺杂着昨天的数据

]$ cat hdfs2hive.sh
#! /bin/sh rm -f /data/hadoop/data/* hdfs="/usr/local/hadoop/bin/hdfs"
hive="/usr/local/hive/bin/hive" yesterday=`date +"%Y%m%d" -d "-1 days"`
today=`date +"%Y%m%d"` ## 合并hdfs文件夹到本地
hdfs_dir="/data/soda_yx/$yesterday" res=`$hdfs dfs -ls $hdfs_dir` if [ -n "$res" ];then
$hdfs dfs -getmerge $hdfs_dir "/data/hadoop/data/data/res.data"
if [ $? -eq 0 ];then
echo "merge to local file is success."
fi
fi ## 按天过滤出文件
dir="/data/hadoop/data"
`cat $dir/res.data |awk -F"\t" '{if($36=="'"$yesterday"'") print $0}' > $dir/$yesterday`
`cat $dir/res.data |awk -F"\t" '{if($36=="'"$today"'") print $0}' > $dir/$today`
if [ $? -eq 0 ];then
echo "filter file is success."
fi ## 插入数据到hive中去
if [ -n "$dir/$yesterday" ];then
$hive -e "LOAD DATA LOCAL INPATH '$local_file' INTO TABLE xxx.soda_report partition(dt='$yesterday')"
if [ $? -eq 0 ];then
echo "Import local data to hive is success."
fi
fi if [ -n "$dir/$today" ];then
$hive -e "LOAD DATA LOCAL INPATH '$dir/$today' INTO TABLE xxx.soda_report partition(dt='$today')"
if [ $? -eq 0 ];then
echo "Import local data to hive is success."
fi
fi

把kafka数据从hbase迁移到hdfs,并按天加载到hive表(hbase与hadoop为不同集群)的更多相关文章

  1. 本地数据文件加载到hive表

    1.在test数据库下创建表格 hive> create table vod_record_all( > watch_time date, > device_id string, & ...

  2. 大数据学习之旅2——从零开始搭hadoop完全分布式集群

    前言 本文从零开始搭hadoop完全分布式集群,大概花费了一天的时间边搭边写博客,一步一步完成完成集群配置,所以相信大家按照本文一步一步来完全可以搭建成功.需要注意的是本文限于篇幅和时间的限制,也是为 ...

  3. hbase运行mapreduce设置及基本数据加载方法

    hbase与mapreduce集成后,运行mapreduce程序,同时需要mapreduce jar和hbase jar文件的支持,这时我们需要通过特殊设置使任务可以同时读取到hadoop jar和h ...

  4. 将HBase中的表加载到hive中

    两种方式加载hbase中的表到hive中,一是hive创建外部表关联hbase表数据,二是hive创建普通表将hbase的数据加载到本地 1. 创建外部表 hbase中已经有了一个test表,内容如下 ...

  5. 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现

    『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现 1.基本设定和软件版本 主机名 ip 对应角色 mas ...

  6. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

  7. JavaScript之加载表格、表单行数据[插件]

    /*** * name:加载表格或表单数据[通用] * name:load-table-or-form-data-common.js * * author:zengtai * date:2017-07 ...

  8. BulkLoad加载本地文件到HBase表

    BulkLoad加载文件到HBase表 1.功能 将本地数据导入到HBase中 2.原理 BulkLoad会将tsv/csv格式的文件编程hfile文件,然后再进行数据的导入,这样可以避免大量数据导入 ...

  9. 大数据高可用集群环境安装与配置(06)——安装Hadoop高可用集群

    下载Hadoop安装包 登录 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 镜像站,找到我们要安装的版本,点击进去复制下载链接 ...

随机推荐

  1. Spring Cloud Eureka 配置

    实例名配置       在Netflix Eureka的原生实现中,实例名采用主机名作为默认值,这样的设置使得在同一主机上无法启动多个相同的实例,所以在Spring Cloud Eureka的配置中, ...

  2. iOS - 获取安装所有App的Bundle ID

    先导入#import <objc/runtime.h>头文件 使用runtime获取设备上的所有app的bundle id // Class LSApplicationWorkspace_ ...

  3. Django---简单接受表单信息

    普通接受信息: 接受单选的值:例如:input select 等提交过来的信息 u = request.POST.get('username',None) 接受多选: h = request.POST ...

  4. 安装支持eigen线性迭代的ceres_solver

    Ceres可以求解以下形式的有界约束非线性最小二乘问题: 这种形式的问题来源于科学工程的多个领域,从统计学的曲线拟合到计算机视觉中从图像中构建三维模型. 最近在做sfm方面的重建问题,需要对得到的相机 ...

  5. 计蒜客 31001 - Magical Girl Haze - [最短路][2018ICPC南京网络预赛L题]

    题目链接:https://nanti.jisuanke.com/t/31001 题意: 一带权有向图,有 n 个节点编号1~n,m条有向边,现在一人从节点 1 出发,他有最多 k 次机会施展魔法使得某 ...

  6. 从url到请求 再到页面生成

    百度面试 从url到请求 再到页面生成 - MartinDing - 博客园 https://www.cnblogs.com/martinding/p/7458723.html

  7. 2015 湘潭大学程序设计比赛(Internet)--D题-最小的数

    最小的数 Accepted : 47   Submit : 276 Time Limit : 1000 MS   Memory Limit : 65536 KB 题目描述 给你一个n位数,每次操作可以 ...

  8. 洛谷 P4201 设计路线 [NOI2008] 树形dp

    正解:树形dp 解题报告: 大概是第一道NOI的题目?有点激动嘻嘻 然后先放个传送门 先大概港下这题的题意是啥qwq 大概就是给一棵树,然后可以选若干条链把链上的所有边的边权变成0,但是这些链不能有交 ...

  9. host文件常用地址

    #+UPDATE_TIME 2016-02-16 19:52:05 UTC+8#+MESSAGE#################################################### ...

  10. 部署MyEclipse及Tomcat服务器

     修改MySQL文件工程密码 Tomcat6.12\webapps\SmsService\WEB-INF\applicationContext.xml目录下的数据库密码 <property na ...