热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqoop传递数据实践

应用场景:1将原有关系数据库的数据传递到大数据平台如hive、hbase。2将大数据平台的数据传递到关系数据库中。简单应用:表对表的同步。复杂应用:在同步时可以通过query-sql来指定所要传递的数
应用场景:

1将原有关系数据库的数据传递到大数据平台如hive、hbase。

2将大数据平台的数据传递到关系数据库中。

简单应用:表对表的同步。

复杂应用:在同步时可以通过query-sql来指定所要传递的数据。

所有红字“注意”都是坑,我都帮你踩过了,你感到幸福吗?

导入(import)

导入的意思就是将关系数据库的数据导入到HDFS、Hive、HBase,这个解释似乎是废话

导入到HIve

import --connect jdbc:postgresql://url:port/schema --username u --password p --table RelationalDatabaseTable --hive-import --hive-table HiveTable -m 1 --null-string \\N --null-non-string \\N

导入到HBase

import --connect jdbc:postgresql://url:port/schema --username u --password p --table RelationalDatabaseTable --hbase-table HbaseTable --column-family YourFamily --hbase-row-key RelationalDatabaseTable_PrimaryKey -m 1

注意:

当你在关系数据库中使用了schema,此时如何导入呢。

应添加-- --schema yourSchema,是的你没看错是两个--,如果你偷懒或者强迫症发作了,真是对不起,sqoop救不了你

延伸阅读:对于postgresql,默认情况下,sqoop的list-tables只列出public目录下的表,所以要想列出特定schema下的表,你需要使用-- --schema来指定哦

简介--query的使用

导入时使用sql查询语句,此时-m 1表示并行度为1,如果你要想增加并行度,对于--query 的情况,你还要格外指定并行度参考字段,即使用

--split-by columnName
 sqoop import \
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
--split-by a.id --target-dir /user/foo/joinresults
注意:使用--query时,以上红字是必须的

导出(export)

导出的意思就是将大数据平台上的数据导出到传统的关系数据,这个解释貌似也是废话

将Hive的数据导出到关系数据库

export  --connect jdbc:postgresql://url:port/schema --username u --password p --table RelationalDatabaseTable --export-dir HDFS_Hive_Table_URL --input-fields-terminated-by "\001" --lines-terminated-by "\n" --input-null-string "\\N" --input-null-non-string "\\N" -m 1

注意:

--input-fields-terminated-by "\001" --lines-terminated-by "\n"
这两个选项一定记得加上, 不然错了都不知道怎么错的(含义hive中的数据存储格式,字段以"\001"分隔,行以"\n"分隔)

将HBase的数据导出关系数据,怎么破。目前sqoop没有破,以后也许会破。

一个解决思路,创建一个Hive外部表A关联到HBase的表,通过A将Hbase的数据导入到一个Hive内部表B,然后再用上面Hive数据导出到关系数据的方法。一句话曲线救国。


其他(eval)

eval就是估算、计算、尝试的意思,解释的不好,因为这是我解释的

eval命令可以发送一个简单的SQL到关系数据库引擎,神奇吧,有些人可能有想法了。。

sqoop eval --connect jdbc:mysql://db.example.com/corp \
--query "SELECT * FROM employees LIMIT 10"
注意:官方说此方法只适用于测试数据库连接。对这就是官方设计它的原因。当然其他复杂sql也可以执行哦,难道是官方在吓人。。等你实践。


参考:

快看这里



推荐阅读
  • MapReduce工作流程最详细解释
    MapReduce是我们再进行离线大数据处理的时候经常要使用的计算模型,MapReduce的计算过程被封装的很好,我们只用使用Map和Reduce函数,所以对其整体的计算过程不是太 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • Python的参数解析argparse模块的学习
    本文介绍了Python中参数解析的重要模块argparse的学习内容。包括位置参数和可选参数的定义和使用方式,以及add_argument()函数的详细参数关键字解释。同时还介绍了命令行参数的操作和可接受数量的设置,其中包括整数类型的参数。通过学习本文内容,可以更好地理解和使用argparse模块进行参数解析。 ... [详细]
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
  • 1关于字符串相邻的两个或多个字符串字面值(引号引起来的字符)将会自动连接到一起:str_catpython!str_cat输出:python!把很长 ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • mapreduce原理_MapReduce原理及WordCount实践
    参考链接:https:www.cnblogs.comlaowangcp8961946.html一、MapReduce流程1.1Mapreduce整体流程: ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • Thisissuewasoriginallyopenedbyashashicorp/terraform#5664.Itwasmigratedhe ... [详细]
  • Python异常处理python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。异常处理:本站Python教程会 ... [详细]
  • 马蜂窝数据总监分享:从数仓到数据中台,大数据演进技术选型最优解
    大家好,今天分享的议题主要包括几大内容:带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程;我个人认为数 ... [详细]
author-avatar
xlenny
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有