菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
128
0

sqoop 使用

原创
05/13 14:22
阅读数 60656

安装配置好之后,就可以使用啦。注意,需要自己将jdbc的jar包放到sqoop的lib目录下。

1.将数据从sqlserver导出到hdfs:

 sqoop import --connect 'jdbc:sqlserver://192.168.68.90:1433;username=sa;password=sa;database=Feedback' --table user_info  --split-by 'id'   --fields-terminated-by ‘\t’  --warehouse-dir /Feedback

导出的结果存在了hdfs的:

 /Feedback/user_info/ part-m-00000

 /Feedback/user_info/ part-m-00001

 /Feedback/user_info/ part-m-00002

 /Feedback/user_info/ part-m-00003

 

等文件中,文件的内容为:

1\tabc
2\tsdfasdf
3\tzhangsan
4\tlisi

其实\t是不可见字符,为了描述出来,我就将它写了出来,在浏览hdfs的文件的时候,是看不到它的。

 

这个脚本中带了一个参数:

 --split-by 'id'

这个'id'是表的主键,如果该表没有主键,则不能使用并行导入,需要指定并行导入的任务数为1:

  --m 1

官方是这么解释的:

-m,--num-mappers <n>     Use n map tasks to import in parallel

 

导入的脚本就得这么写了:

sqoop import --connect 'jdbc:sqlserver://192.168.68.90:1433;username=sa;password=sa;database=Feedback' --table user_info  --fields-terminated-by '\t' -m 1  --warehouse-dir /Feedback

 

这样的job的map数只有1.所以输出文件也就只有一个了。

 

 

 

 

 

 

发表评论

0/200
128 点赞
0 评论
收藏
为你推荐 换一批