使用sqoop导入mysql数据到hive中
Sqoop 是一个数据转储工具,它能够将 hadoop HDFS 中的数据转储到关系型数据库中,也能将关系型数据库中的数据转储到 HDFS 中。
Apache Sqoop,是"SQL to Hadoop"的意思,可以实现 Hadoop 和几乎任何外部结构化数据存储间
的双向数据传输。 Apache Sqoop 旨在协助 RDBMS 与 Hadoop 之间进行高效的大数据交流。
用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系
统 (如 HBase 和 Hive)中;同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库
里。
2) Sqoop 通过 hadoop 的 mapreduce 把数据从关系型数据库中导入数据到 HDFS。 Sqoop
架构非常简单,其整合了 Hive、 Hbase 和 Oozie,通过 map-reduce 任务来传输数据,从而提供并发
特性和容错。
Sqoop的典型应用场景是 将白天的生产的数据库中的数据在晚间导入Hive数据仓库进行分析
1、下载并安装Sqoop
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
mv sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz sqoop-1.4.7.bin
2、设置Sqoop配置文件
cd %SQOOP_HOME%
cp conf/sqoop-env-template.sh /conf/sqoop-env.sh
在sqoop-env.sh中添加如下配置:
export HADOOP_PREFIX=/opt/hadoop-2.8.0
export HADOOP_HOME=${HADOOP_PREFIX}
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
# Native Path
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native"
# Hadoop end
#Hive
export HIVE_HOME=/opt/hive-2.3.3
export PATH=$HIVE_HOME/bin:$PATH
#HBase
export HBASE_HOME=/opt/hbase-2.1.0
export PATH=$HBASE/bin:$PATH
#export ZOOCFGDIR
export ZOOCFGDIR=/opt/zookeeper-3.4.13/conf/
请根据实际情况修改路径
将MySQL需要用到的jar包拷贝至$SQOOP_HOME/lib下
cp mysql-connector-java-8.0.12.jar $SQOOP_HOME/lib
3、配置环境变量
vim /etc/profile
export SQOOP_HOME=/opt/sqoop-1.4.7.bin
export PATH=$SQOOP_HOME/bin:$PATH
4、测试Sqoop
#测试MySQL连接
sqoop list-databases --connect jdbc:mysql://172.168.248.8/student --username root –P
#检验SQL语句
sqoop eval --connect jdbc:mysql://172.168.248.8/student --username root--password ******** \
--query "SELECT id,name,class,suject,score \
FROM student \
WHERE score >=90"
通过以上语句可以确认sqoop是否正常运行,连接mysql是否正常
5、从Mysql导入表数据至HDFS
sqoop import --connect jdbc:mysql://172.16.248.8/student --username root --password ******* --table student --warehouse-dir /myschool -m 1
–warehouse-dir或–target-dir 指定目录
6、从Mysql导入表数据至Hive
sqoop import --connect jdbc:mysql://172.168.248.8/studeng --username root --password ******** --table student --hive-import --hive-database default --create-hive-table -m 1
–create-hive-table:当表在Hive不存在时,使用该参数在指定数据库中添加同名表
- 点赞
- 收藏
- 关注作者
评论(0)