使用sqoop导入mysql数据到hive中

举报
tengyun 发表于 2019/04/19 23:31:17 2019/04/19
【摘要】 Sqoop 是一个数据转储工具,它能够将 hadoop HDFS 中的数据转储到关系型数据库中,也能将关系型数据库中的数据转储到 HDFS 中。

Sqoop 是一个数据转储工具,它能够将 hadoop HDFS 中的数据转储到关系型数据库中,也能将关系型数据库中的数据转储到 HDFS 中。

clipboard.png

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不存在时,使用该参数在指定数据库中添加同名表


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。