sqoop导入与导出总结

mysql导入hadoop体系

sqoop可以可以把mysql的数据导入hdfs,hive以及hbase.就是把mysql导入hadoop体系中.

sqoop需求

  • 确定导入还是导出 import 或者export
  • maptask的数量可以自定义. 利用-m 或者–split-by 就是依据哪个字段分段

mysql需求

相当于是把mysql中的表变成了hdfs上的文件.
mysql需要提供

  • 连接–connect, --username,–password
  • 表名–table. 想要被导入hadoop体系的表格
  • 有时候可能不是想导入整个表,而只是表的一部分.所以可以是查询的结果 --query, 或者–columns(只是某几列) 还可以使用过滤条件(–where)

hdfs需求

  • hdfs需要提供保存路径(–target-dir)即可. 其实相当于也提供了导入后的名字.
  • 以及保存的分隔符(–fields-terminated-by).
  • hdfs要导入的路径无需提前存在,所以需要一个参数控制,–delete-target-dir.如果有就删除,以防止重复.做一个逻辑判断.

hive需求

  • 导入hive的路径? hive本身是存储在hdfs默认路径下的,所以不需要写路径.只要告诉是hive导入就行了.–hive-import,hbase没设计类似的,事实上这玩意设计不合理,多余的.下面的参数又–hive-table…这里就包含了是要导入hive的信息了.
  • 导入hive后的名字叫什么?–hive-table
  • -确定是否覆盖还是追加 --hive-overwrite
    • 导入到hive哪个分区 --hive-partition-key, 还有–hive-partition-value

hbase需求

  • 导入哪个表格? --hbase-table 类比–hive-table
  • 导入要不要自动创表 --hbase-create-table,hive没设计这个,默认自动创建
  • 导入哪个列簇 --column-family
  • rowkey是哪个?这也是hbase的必备选项… --hbase-row-key

异常处理

  • 对mysql中的空进行处理 --null-string 或者–null-non-string

总结

mysql导入hdfs,hive,hbase. 本质都是hdfs上存储的不同目录.导入hive中必然也导入了hive和hbase. 另一个注意就是hive自己的特有参数,分区. hbase的特有参数 列簇,rowkey等等.

另一个.hive,hbase上都不需要提前创建表结构,schema,因为mysql上表结构很详细,程序可以自动根据mysql的表结构来创建hive上或hbase上的表结构. 反之则不行.当从hdfs,hive,或hbase导入mysql时,需要提前在mysql上建立表,设置schema/

hadoop体系导入mysql

mysql需求

mysql中的表格schema要提前创建好,因为比如说hbase中都没有数据类型,系统无法获取这些信息. 其他需求就是连接啥的

hdfs需求

  • 导出来源目录: --export-dir 这个是hdfs上的目录
  • 分割符,这个和导入时一样的 fields-terminated-by 不管导入导出,分隔符一定都是要写的

hive需求

和hdfs导出mysql是完全一样的.hive其实也是hdfs下的一个目录.

hbase需求

目前没有这个功能

特殊需求

–input-null-string ‘\N’
–input-null-non-string ‘-1’ \

总结:

hdfs,hive导出到mysql时候,需要导出文件来源路径. 然后mysql需要提前建表.
其实比导入要简单~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值