hadoop学习记录

(一)如何通过sqoop把mysql中的数据输入到HDFS中

1.首先mysql中,需要一张有数据的表;
2.在hive中,我需要一张表来接收数据,当然两张表的字段和类型,必须一致;
3.下面开始导入;

sudo -u hive hadoop fs -rm -r /warehouse/ar.db/employees_mysql_txt_zac;(备注:zac随便的字段,可以替换别的)
#sudo -u hive 意思把权限交给hive,让hive帮你干事儿;
hadoop fs 就是hadoop程序开始接收指令,后面可以跟好多命令行下的代码,比如-ls,-mkdir,-rm,-chown(更改文件所有者和他的组)等等;后面是删除目录下的文件

ps:上面语句不要运行,就是想加深印象。。

这段语句意思是把hadoop里
/warehouse/ar.db/employees_mysql_txt_zac该表格删除

在这里插入图片描述
感觉下面就有点难了,还好班上有个大佬,他跟我讲了大概意思,及时记录总结,有不足或错误之处,还请私信我,共同进步~
(ps:用序号记录行数,方便解释)
1.sudo -u hive sqoop import
2.–connect jdbc:mysql://hadoop102:3306/ar
3.–username root
4.–password Ar@123456
5.–query “SELECT e_id,name,salary,age,occupation FROM ar.employees_mysql_zac WHERE 1=1 and $CONDITIONS”
6.–m 1
7.–hive-table nb.employees_mysql_txt_zac
8.–hive-drop-import-delims
9.–null-non-string ‘\N’
10.–null-string ‘\N’
11.–fetch-size 10000
12.–target-dir /warehouse/employees_mysql_txt_zac
13.–hive-import
第一行:以hive的身份运行 sqoop,它import下面的指令,
反斜杠意思:因为我们在命令行下运行语句时,enter一下执行而且换行了,反斜杠就是语句太长了,一下子写不完,就\连接
第二行:–(杠杠)在sql中是注释,现在在命令行下面,不是注释,代表要输入指令吧,可能是sqoop固定的一种输入规范,不太清楚。connect 开始建立连接,要连接谁呢? jdbc相当于一个连接引擎,要连接的是主机名hadoop102这个机器,用3306端口连接的mysql中的ar数据库。
第三行、第四行:输入用户名-密码
第五行:query:按照sql语句导入select中查询的列,where 1 = 1代表 表的所有行, $CONDITIONS" :这个当作一个固定模式吧,暂时我也没搞懂,总之query时带上他。
第六行 – m 1:Sqoop并行化是启多个map task实现的,-m(或–num-mappers)参数指定map task数,默认是四个。当指定为1时,可以不用设置split-by参数,不指定num-mappers时,默认为4,当不指定或者num-mappers大于1时,需要指定split-by参数。并行度不是设置的越大越好,map task的启动和销毁都会消耗资源,而且过多的数据库连接对数据库本身也会造成压力。在并行操作里,首先要解决输入数据是以什么方式负债均衡到多个map的,即怎么保证每个map处理的数据量大致相同且数据不重复。
第七行:hive下的目标表名
第八行:导入到hive时用自定义的字符替换掉 \n, \r, and \01
第九行、第十行:把\N转化成空字符,
第十一行:释放一块儿内存区
第十二行:HDFS下目标表的一个路径
第十三行:把数据导入到hive中的目标表
(其实并不清楚自己对与否,暂时先这么理解记忆把,以后随着理解的深入会进行扩充和更改的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值