Sqoop(一)安装及基本使用

本文详细介绍了Sqoop的使用,包括从数据库导入数据到HDFS和Hive,以及从HDFS和Hive导出数据到数据库。通过设置环境变量、配置连接信息,演示了如何执行Sqoop命令进行数据迁移。同时,还展示了如何将MySQL数据导入到Hive,并解决可能出现的异常问题。整个过程强调了 Sqoop 在数据迁移中的作用及其与MapReduce的关系。
摘要由CSDN通过智能技术生成

本文转载自:https://www.cnblogs.com/yfb918/p/10411507.html
Sqoop:

  1. sqoop从数据库中导入数据到HDFS
  2. sqoop从数据库导入数据到hive
  3. sqoop从hive中将数据导出到数据库

sqoop底层还是执行的mapreduce程序,但是特殊的地方只有map task
可以实现:企业级数据仓库、文档型系统、关系型数据库

sqoop安装:

  1. tar -zxvf sqoop-1.4.6-cdh5.5.2.tar.gz
  2. 将mysql的驱动包mysql-connector-java-5.1.43.jar拷贝到sqoop home/lib下面
cp mysql-connector-java-5.1.43.jar sqoop-1.4.6-cdh5.5.2/lib/

3.配置环境变量

export SQOOP_HOME=/yang/sqoop-1.4.6-cdh5.5.2
export PATH=$PATH:$SQOOP_HOME/bin
  1. 配置SQOOP ,cd sqoop-1.4.6-cdh5.5.2/conf/
mv sqoop-env-template.sh sqoop-env.sh
        
export HADOOP_COMMON_HOME=/yang/hadoop-2.6.5
export HADOOP_MAPRED_HOME=/yang/hadoop-2.6.5
export HBASE_HOME=/yang/hbase-1.2.5
export HIVE_HOME=/yang/apache-hive-2.1.1-bin
  1. source /etc/profile
  2. sqoop version

开始使用:
前提:mysql可以正常使用
hdfs服务开启start-dfs.sh start-yarn.sh
hive服务开启 nohup hive --service metastore &
查看数据库有哪些表

sqoop list-tables --connect jdbc:mysql://192.168.100.121:3306/big_data --username root -P

或者(上面大写P会让你在控制台输入密码)

sqoop list-tables --connect jdbc:mysql://192.168.100.121:3306/big_data --username root --password 1234
sqoop list-tables --connect jdbc:mysql://192.168.100.121:3306/big_data --username root -P

#使用 sqoop将数据库的数据导入到 Hdfs(地址使用默认地址/user/$user/tabname)
斜杠后面不能有空格 而且需要启动yarn,因为要sqoop底层要执行mapreduce
当执行报错;classwrite的时候加入:–driver com.mysql.jdbc.Driver \

sqoop import \
--connect jdbc:mysql://192.168.100.121:3306/big_data \
--driver com.mysql.jdbc.Driver \
--username root \
--password 1234 \
--table t_area 需要放入那张表
#使用指定的输出目录 --target-dir /tmp \
#使用指定的并发数量 -m 2
sqoop import \
--connect jdbc:mysql://192.168.100.121:3306/big_data \
--driver com.mysql.jdbc.Driver \
--username root \
--password 1234 \
--table t_area \
--target-dir /sqoop \
-m 2

#使用sqoop将HDFS文件导出到 MYSQL 表中,默认MAP为 4个 ,先将空表建好t_area_copy1

sqoop export \
--connect jdbc:mysql://192.168.100.121:3306/big_data \
--driver com.mysql.jdbc.Driver \
--table t_area_copy1 \
--username root \
--password 1234 \
--export-dir hdfs://192.168.200.200:9000/sqoop

mysql导入到hive:
注意需要启动服务:hive服务开启 nohup hive --service metastore &
再来启动hive

#使用自定义的条件,并且过滤字段,并发数为1
#切分的字段可以更改为另外一个字段  
sqoop import \
--hive-import \
--hive-table t_area \
--connect jdbc:mysql://192.168.128.121:3306/big_data \
--username root \
--password 1234 \
--query "SELECT * from t_area where \$CONDITIONS"  \ //将mysql中的表导入到hive表t_area
--fields-terminated-by "," \ //按,分割,首先在hive中将表建好(z字段对应),并按,分割
--lines-terminated-by "\n" \
--target-dir /tmp/aa \ //临时存放的目录
-m 1

异常:org.apache.hadoop.hive.conf.HiveConf
Make sure HIVE_CONF_DIR is set correctly
解决:
在/etc/profile下面加上:

HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*

分布发送到其他主机上 source 一下

sqoop export \
--connect jdbc:mysql://192.168.100.121:3306/big_data \
将hive的数据导出到mysql:是通过hdfs中的路径导入到mysql中
如果需要通过导入指定行的话,需要建立中间表
--driver com.mysql.jdbc.Driver \
--table t_area1 \    //导入到mysql表t_area1
--username root \
--password 1234 \    
--export-dir /user/hive/warehose/t_area \          这个文件路径从hdfs上知道
--input-fields-terminated-by ',' 是以,分割的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值