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
4、配置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
5、source /etc/profile
6、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字段对应),并按,分割
--li
nes-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_CLA
sspATH=$HADOOP_CLA
sspATH:$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 ',' 是以,分割的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。