hive 学习笔记之八:Sqoop,大厂 Offer 拿到手软啊
[分区表](
)
[分桶](
)
[HiveQL 基础](
)
[内置函数](
)
[Sqoop](
)
[基础 UDF](
)
[用户自定义聚合函数(UDAF)](
)
[UDTF](
)
[](
)关于 Sqoop
Sqoop 是 Apache 开源项目,用于在 Hadoop 和关系型数据库之间高效传输大量数据,本文将与您一起实践以下内容:
部署 Sqoop
用 Sqoop 将 hive 表数据导出至 MySQL
用 Sqoop 将 MySQL 数据导入到 hive 表
[](
)部署
在 hadoop 账号的家目录下载 Sqoop 的 1.4.7 版本:
wget https://mirror.bit.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
解压:
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
解压后得到文件夹 sqoop-1.4.7.bin__hadoop-2.6.0,将 mysql-connector-java-5.1.47.jar 复制到 sqoop-1.4.7.bin__hadoop-2.6.0/lib 目录下
进入目录 sqoop-1.4.7.bin__hadoop-2.6.0/conf,将 sqoop-env-template.sh 改名为 sqoop-env.sh:
mv sqoop-env-template.sh sqoop-env.sh
用编辑器打开 sqoop-env.sh,增加下面三个配置,HADOOP_COMMON_HOME 和 HADOOP_MAPRED_HOME 是完整的 hadoop 路径,HIVE_HOME 是完整的 hive 路径:
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.7.7
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.7.7
export HIVE_HOME=/home/hadoop/apache-hive-1.2.2-bin
安装和配置完成了,进入 sqoop-1.4.7.bin__hadoop-2.6.0/bin,执行./sqoop version 查看 sqoop 版本,如下所示,可见是 1.4.7 版本(有些环境变量没配置会输出告警,在此先忽略):
[hadoop@node0 bin]$ ./sqoop version
Warning: /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/bin/../../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/bin/../../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
20/11/02 12:02:58 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
Sqoop 1.4.7
git commit id 2328971411f57f0cb683dfb79d19d4d19d185dd8
Compiled by maugli on Thu Dec 21 15:59:58 STD 2017
sqoop 装好之后,接下来体验其功能
[](
)MySQL 准备
为了接下来的实战,需要把 MySQL 准备好,这里给出的 MySQL 的配置供您参考:
MySQL 版本:5.7.29
MySQL 服务器 IP:192.168.50.43
MySQL 服务端口:3306
账号:root
密码:123456
数据库名:sqoop
关于 MySQL 部署,我这为了省事儿,是用 docker 部署的,参考[《群晖 DS218+部署 mysql》](
)
[](
)从 hive 导入 MySQL(export)
执行以下命令,将 hive 的数据导入到 MySQL:
./sqoop export \
--connect jdbc:mysql://192.168.50.43:3306/sqoop \
--table address \
--username root \
--password 123456 \
--export-dir '/user/hive/warehouse/address' \
--fields-terminated-by ','
评论