mongoDB同步数据到hive
来源:互联网 发布:mac os 镜像 编辑:程序博客网 时间:2024/05/06 11:05
sqoop作为很常用的数据同步工具,用于RDBMS和HDFS的数据迁移,但是不支持NoSql,比如说MongoDB,那如果我们需要同步mongoDB的数据到hive该怎么处理呢?下面提供下我的思路:
1.我先去查询了一下mongoDB可以导出数据为CSV格式或者json格式的文件,CSV是以逗号分隔的,这样可以直接把这个文件put到hdfs中然后load到hive,但是有个问题就是:如果数据本身就自带一个或者多个逗号,那么这样做就会造成字段错位的问题。那我们就可以使用生成json的这种文件。
2.然后了解了下mongoDB可以条件导出,那么就可以进行增量操作了,这样我们可以每次只导出增量的数据到文件中进行操作。
3.如果使用json这样的文件,那么数据就相当于在hive中只有一列,导入增量的话,我们可以每天或者每月、周(看需求)只导出增量的数据,那每次同步数据的时候都把这次的数据放到一个分区(第一次同步之前需要建立好分区表)可以以昨天的时间为分区字段,然后通过scp命令将文件发送到hive的客户端上(需要提前进行ssh免密码登录),然后通过调度器每天或者每月、周定时执行任务去把接受到的文件直接load到hive分区表中。
4.导入到hive表中之后,这个hive表只有1个主要字段以及分区字段,我们可以对这个表进行加工,将json解析成一个一个字段和值,可以通过hive的函数get_json_object(name,’$.xxxx’)解析,导入一个新表里面,新表的字段就是json中的key。
比如json格式如下:
{ "a1": "hehe", "b1": "heihei", "c1": { "c2": "lala" }}
hive中解析如下:
select get_json_object(name,'$.a1') as a1, get_json_object(name,'$.b1') as b1, get_json_object(get_json_object(name,'$.c2'),'$.c1') as c2from table_name
其中有个注意点就是,怎么判断mongDB的数据已经导入到文件并发送过来?
其实可以在调度器上面配置一检查个任务,当到了定时执行同步任务的时候让同步任务依赖一个检查任务,检查任务就是去不断检查scp的文件传输过来没,如果没有过来间隔一段时间再去检查(时间自己配置),直到检查到数据来了,检查任务就结束,后面的同步任务就开始执行。
- mongoDB同步数据到hive
- Mongodb数据同步到Hive
- spark从mongodb导入数据到hive
- 导入Mongodb数据到Hive方法二
- sqoop同步mysql数据到hive中
- MongoDB 数据自动同步到 ElasticSearch
- logstash-output-mongodb实现Mysql到Mongodb数据同步
- logstash-out-mongodb实现elasticsearch到Mongodb的数据同步
- 定时从大数据平台同步HIVE数据到oracle
- 同步hive数据仓库数据到Elasticsearch的工具
- impala同步hive数据
- Hive 同步数据
- ES-MongoDB学习3_MongoDB数据同步到Elasticsearch中
- 五种方式将数据从MongoDB同步到ElasticSearch
- 从MongoDB同步数据到ElasticSearch 的五种方式
- 微服务MySQL分库分表数据到MongoDB同步方案
- 微服务MySQL分库分表数据到MongoDB同步方案
- 【转】微服务MySQL分库分表数据到MongoDB同步方案
- 数据结构实验之查找四:二分查找
- scala中一些常见用法
- 希尔排序及Java实现
- 如何利用神经网络结合遗传算法进行非线性函数极值寻优(1)
- 排序算法(二)-冒泡排序(Bubble Sort)
- mongoDB同步数据到hive
- Android中路由的实现
- 俄罗斯方块游戏培训相关文件
- 在那一瞬间我长大了
- LeetCode 88. Merge Sorted Array
- Android layout属性大全
- Java实现对局域网内PC的监控
- Java泛型-类型擦除
- 《Android群英传》---读书笔记3