把数据从关系型数据库导入到hadoop

启动sqoop

导入表表数据到HDFS

下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。

sqoop import \
--connect jdbc:mysql://mini1:3306/userdb \
--username root \
--password 123456 \
--table emp --m 1

在/root/sqoop下执行命令,导入emp表到hdfs

./sqoop import \
--connect jdbc:mysql://mini1:3306/userdb \
--username root \
--password 123456 \
--table emp --m 1

注意执行上边的命令可能会遇到这个问题 https://www.cnblogs.com/feifeicui/p/10311076.html
查看执行结果hdfs dfs -ls /user/root

在/root/sqoop下执行命令,导入emp_add表到hdfs

./sqoop import \
--connect jdbc:mysql://mini1:3306/userdb \
--username root \
--password 123456 \
--table emp_add --m 1

执行完命令会生成 emp_add.java  emp.java

把数据库的emp_conn这个表先导入到hdfs上 /user/root/emp_con这个目录下,然后将这个目录下的数据通过load形式导入到hive表中,这里还没有指明对应的hive上的表名,它会用mysql数据库的表名。

./sqoop import \
--connect jdbc:mysql://mini1:3306/userdb \
--username root \
--password 123456 \
--table emp_conn
--hive-import --m 1

导入到HDFS指定目录

在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。

以下是指定目标目录选项的Sqoop导入命令的语法。

--target-dir <new or exist directory in HDFS>

下面的命令是用来导入emp_add表数据到'/queryresult'目录。

bin/sqoop import \

--connect jdbc:mysql://hdp-node-01:3306/test \

--username root \

--password root \

--target-dir /queryresult \

--table emp --m 1

下面的命令是用来验证 /queryresult 目录中 emp_add表导入的数据形式。

$HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-*

它会用逗号(,)分隔emp_add表的数据和字段。

1201, 288A, vgiri,   jublee

1202, 108I, aoc,     sec-bad

1203, 144Z, pgutta,  hyd

1204, 78B,  oldcity, sec-bad

1205, 720C, hitech,  sec-bad

导入表数据子集

我们可以导入表的使用Sqoop导入工具,"where"子句的一个子集。它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。

where子句的语法如下。

--where <condition>

下面的命令用来导入emp_add表数据的子集。子集查询检索员工ID和地址,居住城市为:Secunderabad

bin/sqoop import \

--connect jdbc:mysql://hdp-node-01:3306/test \

--username root \

--password root \

--where "city ='sec-bad'" \

--target-dir /wherequery \

--table emp_add --m 1

按需导入

bin/sqoop import \

--connect jdbc:mysql://hdp-node-01:3306/test \

--username root \

--password root \

--target-dir /wherequery2 \

--query 'select id,name,deg from emp WHERE  id>1207 and $CONDITIONS' \

--split-by id \

--fields-terminated-by '\t' \

--m 1

下面的命令用来验证数据从emp_add表导入/wherequery目录

$HADOOP_HOME/bin/hadoop fs -cat /wherequery/part-m-*

它用逗号(,)分隔 emp_add表数据和字段。

1202, 108I, aoc, sec-bad

1204, 78B, oldcity, sec-bad

1205, 720C, hitech, sec-bad

增量导入

增量导入是仅导入新添加的表中的行的技术。

它需要添加‘incremental’, ‘check-column’, 和 ‘last-value’选项来执行增量导入。

下面的语法用于Sqoop导入命令增量选项。

--incremental <mode>

--check-column <column name>

--last value <last check column value>

假设新添加的数据转换成emp表如下:

1206, satish p, grp des, 20000, GR

下面的命令用于在EMP表执行增量导入。

bin/sqoop import \

--connect jdbc:mysql://hdp-node-01:3306/test \

--username root \

--password root \

--table emp --m 1 \

--incremental append \

--check-column id \

--last-value 1205

以下命令用于从emp表导入HDFS emp/ 目录的数据验证。

$ $HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/emp/part-m-*

它用逗号(,)分隔 emp_add表数据和字段。

1201, gopal,    manager, 50000, TP

1202, manisha,  preader, 50000, TP

1203, kalil,    php dev, 30000, AC

1204, prasanth, php dev, 30000, AC

1205, kranthi,  admin,   20000, TP

1206, satish p, grp des, 20000, GR

下面的命令是从表emp 用来查看修改或新添加的行

$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*1

这表示新添加的行用逗号(,)分隔emp表的字段。

1206, satish p, grp des, 20000, GR

转载于:https://www.cnblogs.com/feifeicui/p/10309017.html

大数据学习——sqoop导入数据相关推荐

  1. sqoop动态分区导入mysql,sqoop 导入数据到hive分区表(外表,内表) 指定分区 指定数据库 指定表...

    sqoop 导入数据到hive 1.1.导入数据到hive分区表(内表),指定分区 创建hive分区表 –hive-database 指定数据库 –table 指定表 –hive-overwrite ...

  2. sqoop导入数据常见问题解决方法

    sqoop导入数据常见问题解决方法 参考文章: (1)sqoop导入数据常见问题解决方法 (2)https://www.cnblogs.com/chaojibaidu/p/11071132.html ...

  3. sqoop导入数据(保持一致性)--staging-table

    sqoop导入数据(保持一致性)–staging-table sqoop import参数 –query "select XXXXX and $CONDITIONS " 按条件导入 ...

  4. Sqoop导入数据--split by 和 --m(大于1)配合使用

    Sqoop导入数据–split by 和 --m(大于1)配合使用 split-by 根据不同的参数类型有不同的切分方法: 如int型,Sqoop会取最大和最小split-by字段值,然后根据传入的n ...

  5. Sqoop导入数据发生数据倾斜问题 及更好解决

    Sqoop导入数据发生数据倾斜问题 及更好解决 一:问题 在生产环境中,由于数据是庞大的,且是复杂的 Sqoop抽数使用单实例报内存溢出以及抽数时间过长,决定采用sqoop的多实例并行抽数 官网:ht ...

  6. Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据

    Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据 一.需求描述 在使用postman调试接口时,若遇到内网的环境,无法通过账户同步数据: ...

  7. oracle11g 使用数据泵导出导入数据

    oracle11g 使用数据泵导出导入数据 终于搞定了 快写个笔记 记录下. 删除用户的时候提示已经登录了不能删除,这个需要把登录的session结束掉. select username,sid,se ...

  8. oracle impdp导入full,使用数据泵impdp导入数据

    前一些测试里面,通过expdp导出了各种数据库表.模式.表空间以及全库. 在这里,我们就通过之前导出来的逻辑备份文件,使用impdp工具把导出的文件 逆向导入数据库里面. ----使用数据泵impdp ...

  9. Sqoop 导入数据到hdfs和hive总结

    使用帮助 Sqoop help 查看所有的sqoop的帮助 Sqoop help import 查看import命令的帮助 Eg: sqoop导入到HDFS的一个简单示例: sqoop import ...

最新文章

  1. java 时间戳 与时间的转换
  2. Vue Router webpack
  3. 泛型委托Funcstring,string()
  4. 不停刷朋友圈的人_除夕夜!钦州人朋友圈刷爆了年夜饭,简直太丰盛了…
  5. Http中Get/Post请求区别
  6. javascript复制到黏贴板之完美兼容
  7. easyui的下拉框combobox在包含的iframe页面里点击不能收回解决办法
  8. 一条龙教程:Matlab下使用yalmip(工具箱)+cplex(求解器)
  9. 计算机excel表格教程高级筛选6,Excel高级筛选
  10. 深入了解Excel工作表中的控件
  11. cad安装日志文件发生错误_CAD安装问题,CAD安装时为什么显示内部发生错误急?...
  12. 记录一下Base64 在线编码解码
  13. 客户细分_客户细分初学者指南
  14. 我精心整理的 136 页 Excel 数据透视表 PDF 文件!【附获取方式】
  15. 网易云音乐登录报错 status: 400, body: { code: -460, message: ‘网络太拥挤,请稍候再试!‘ } 解决
  16. 【商业画布】魏朱画布
  17. 【面试】面试反问环节
  18. MacBook Pro 16寸 i9-9880H对比 桌面级CPU i7-8700
  19. 操作系统饥饿现象_操作系统中的饿死现象怎样理解?
  20. Thinkphp 5.0 购物网站

热门文章

  1. 右下角托盘广告消息弹窗?如邮件图标广告等通用解决方法
  2. 2022 年 1-6 月墨天轮最受欢迎的 25 篇原创技术文章
  3. 〖产品思维训练白宝书 - 产品思维认知篇④〗- 产品思维的核心要素
  4. java中if结构用图表示_Java语法 | if选择结构 | 创作者训练营
  5. html js 动画效果,原生js html5 canvas 3D云动画效果
  6. 记录一个在Unity中实现生成无限向上旋转楼梯效果
  7. python操作word题注样式_题注在论文图表编号中的使用
  8. [Golang数据库专题3]Golang语言操作SQLite3进行增删改查
  9. 爬虫批量下小姐姐壁纸
  10. (11)照虎画猫深入理解响应式流规范——响应式Spring的道法术器