您的位置:首页 > 科技 > IT业 > 桂林北站官网_徐州最新通知今天_网页制作免费模板_怎么做网站教程

桂林北站官网_徐州最新通知今天_网页制作免费模板_怎么做网站教程

2024/12/23 16:26:32 来源:https://blog.csdn.net/Helen_1997_1997/article/details/129416259  浏览:    关键词:桂林北站官网_徐州最新通知今天_网页制作免费模板_怎么做网站教程
桂林北站官网_徐州最新通知今天_网页制作免费模板_怎么做网站教程

目录

一、Soop简介

二、Sqoop的安装

1. 上传压缩包到/opt/install目录下

2.解压

3.修改文件名

4.拷贝sqoop-1.4.7.bin__hadoop-2.6.0目录下的sqoop-1.4.7.jar包到/opt/soft/sqoop147目录下

5.拷贝sqoop-1.4.7.bin__hadoop-2.6.0/lib目录下该jar包到sqoop/lib目录下

6.复制hive的jar包到sqoop147/lib目录下

7.修改配置文件 

8.配置环境变量

9.检验Sqoop是否安装成功

10.退出安全模式

三、使用案例

(一)Sqoop查看mysql数据库

(二)查看指定数据库下所有表

(三)Sqoop创建Hive表

(四)导入案例——mysql导入HDFS

1.将mysql中的表全部导入到HDFS指定目录下的文件中

2.导入HDFS时添加条件过滤

3.指定列导入HDFS

4.查询语句导入HDFS

(五)导入案例——将mysql数据库中的表导入到Hive中

1.全表导入hive的default库中

2.导入到hive的指定库中


一、Soop简介

        Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql等)间进行数据的传递。可以将关系型数据库(MySQL ,Oracle,Postgres等)中的数据导入到HDFS中,也可以将HDFS的数据导进到关系型数据库中。

        Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个 Apache 项目。

二、Sqoop的安装

1. 上传压缩包到/opt/install目录下

2.解压

[root@lxm147 install]# tar -zxf sqoop-1.4.7.tar.gz -C /opt/soft/

3.修改文件名

[root@lxm147 soft]# mv sqoop-1.4.7/ sqoop147

4.拷贝sqoop-1.4.7.bin__hadoop-2.6.0目录下的sqoop-1.4.7.jar包到/opt/soft/sqoop147目录下

5.拷贝sqoop-1.4.7.bin__hadoop-2.6.0/lib目录下该jar包到sqoop/lib目录下

6.复制hive的jar包到sqoop147/lib目录下

[root@lxm147 lib]# cp /opt/soft/hive312/lib/hive-common-3.1.2.jar ./[root@lxm147 lib]# cp /opt/soft/hive312/lib/mysql-connector-java-8.0.29.jar ./

7.修改配置文件 

[root@lxm147 conf]# pwd
/opt/soft/sqoop147/conf
[root@lxm147 conf]# ll
total 20
-rw-rw-r--. 1 lxm lxm 3895 Dec 19  2017 oraoop-site-template.xml
-rw-rw-r--. 1 lxm lxm 1404 Dec 19  2017 sqoop-env-template.cmd
-rwxr-xr-x. 1 lxm lxm 1345 Dec 19  2017 sqoop-env-template.sh
-rw-rw-r--. 1 lxm lxm 6044 Dec 19  2017 sqoop-site-template.xml
[root@lxm147 conf]# cp sqoop-env-template.sh sqoop-env.sh[root@lxm147 conf]# vim sqoop-env.sh22 #Set path to where bin/hadoop is available23 export HADOOP_COMMON_HOME=/opt/soft/hadoop31324 25 #Set path to where hadoop-*-core.jar is available26 export HADOOP_MAPRED_HOME=/opt/soft/hadoop31327 28 #set the path to where bin/hbase is available29 #export HBASE_HOME=30 31 #Set the path to where bin/hive is available32 export HIVE_HOME=/opt/soft/hive31233 export HIVE_CONF_DIR=/opt/soft/hive312/conf34 #Set the path for where zookeper config dir is35 export ZOOCFGDIR=/opt/soft/zookeeper345/conf

8.配置环境变量

# SQOOP_HOME
export SQOOP_HOME=/opt/soft/sqoop147
export PATH=$PATH:$SQOOP_HOME/binsource /etc/profile

9.检验Sqoop是否安装成功

sqoop version

出现版本信息即可

10.退出安全模式

[root@lxm147 ~]# hdfs dfsadmin -safemode leave
Safe mode is OFF

三、使用案例

(一)Sqoop查看mysql数据库

[root@lxm147 ~]# sqoop list-databases \
> --connect jdbc:mysql://192.168.180.141:3306 \
> --username root \
> --password root

(二)查看指定数据库下所有表

sqoop list-tables \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root \
> --password root

(三)Sqoop创建Hive表

[root@lxm147 ~]# sqoop create-hive-table --help

在hive中创建一个teacher表,与mysql50库中的teacher结构相同

mysql50中teacher表结构:

sqoop create-hive-table --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table teacher --hive-table teachersqoop create-hive-table --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table teacher --hive-table teacher1 

(四)导入案例——mysql导入HDFS

1.将mysql中的表全部导入到HDFS指定目录下的文件中

[root@lxm147 ~]# sqoop import \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root --password root \
> --table sc \
> --target-dir /tmp/mysql50/sc \
> --fields-terminated-by '\t' \
> -m 1

-m 2

sqoop import --connect jdbc:mysql://192.168.180.141:3306/kb21 --username root --password root --table account --target-dir /tmp/kb21/account --fields-terminated-by '\t' -m 2
[root@lxm147 ~]# hdfs dfs -cat /tmp/kb21/account/part-m-00000
2023-03-09 11:01:04,748 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
1	张三	2500.00
[root@lxm147 ~]# hdfs dfs -cat /tmp/kb21/account/part-m-00001
2023-03-09 11:01:32,211 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
2	李四	2500.00

主键值%3=0,1,2放在不同的桶中

-m 3

2.导入HDFS时添加条件过滤

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --where "sid='01'" --target-dir /tmp/mysql50/sid01 -m 1 
[root@lxm147 ~]# hdfs dfs -cat /tmp/mysql50/sid01/part-m-00000
2023-03-09 11:28:22,867 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
01,01,80.0
01,02,90.0
01,03,99.0

3.指定列导入HDFS

[root@lxm147 ~]# sqoop import \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root --password root \
> --table sc --columns "cid,score" --where "sid='01'" \
> --target-dir /tmp/mysql50/sid02 \
> -m 1[root@lxm147 ~]# hdfs dfs -cat /tmp/mysql50/sid02/part-m-00000
2023-03-09 11:32:48,382 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
01,80.0
02,90.0
03,99.0
​

4.查询语句导入HDFS

[root@lxm147 ~]# sqoop import \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root \
> --password root \
> --target-dir /tmp/mysql50/squery \
> --query 'select * from sc where $CONDITIONS and CID="02" and score > 80 ' \
> --fields-terminated-by "\t" \
> -m 1[root@lxm147 ~]# hdfs dfs -cat /tmp/mysql50/squery/part-m-00000
2023-03-09 11:58:21,914 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
01	02	90.0
05	02	87.0
07	02	89.0

(五)导入案例——将mysql数据库中的表导入到Hive中

1.全表导入hive的default库中

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import -m 1

2.导入到hive的指定库中

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import --hive-database kb21 -m 1

重写,元数据会被覆盖

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import --hive-overwrite --hive -database kb21 -m 1

增量导入

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import --incremental --hive -database kb21 -m 1

(六)Hive导入到mysql中

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com