专栏首页linux百科小宇宙Sqoop安装配置及Hive导入

Sqoop安装配置及Hive导入

Sqoop是一个用来将Hadoop(Hive、HBase)和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。

官网地址:http://sqoop.apache.org/

一、安装配置

1.下载

最新版本1.4.6,下载http://mirrors.cnnic.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

解压:tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6.bin

2.环境变量配置

vi ~/.bash_profile

export SQOOP_HOME=/home/hadoop/sqoop-1.4.6

export PATH=$SQOOP_HOME/bin:$PATH

使其生效source .bash_profile

3.配置Sqoop参数

复制conf/sqoop-env-template.sh 为:conf/sqoop-env.sh

# Hadoop 

export HADOOP_PREFIX=/home/hadoop/hadoop-2.6.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=/home/hadoop/hive-1.2.1

export PATH=$HIVE_HOME/bin:$PATH

 

#HBase

export HBASE_HOME=/home/hadoop/hbase-1.1.2

export PATH=$HBASE/bin:$PATH4.复制mysql驱动

将mysql的驱动jar(mysql-connector-java-5.1.34.jar)复制到lib目录下

二、hive导入测试

sqoop ##sqoop命令

import ##表示导入

--connect jdbc:mysql://ip:3306/sqoop ##告诉jdbc,连接mysql的url

--username root ##连接mysql的用户名

--password 123456 ##连接mysql的密码

--table test ##从mysql导出的表名称

--query  ##查询语句

--columns ##指定列

--where  ##条件

--hive-import  ##指定为hive导入

--hive-table ##指定hive表,可以使用--target-dir //user/hive/warehouse/table_name 替换

--fields-terminated-by '\t' ##指定输出文件中的行的字段分隔符

-m 1 ##复制过程使用1个map作业

以上的命令中后面的##部分是注释,执行的时候需要删掉;另外,命令的所有内容不能换行,只能一行才能执行。以下操作类似。

准备数据

 

CREATE TABLE `t_user` (

  `id` varchar(40) COLLATE utf8_bin NOT NULL,

  `name` varchar(40) COLLATE utf8_bin NOT NULL,

  `age` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

 );

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));

INSERT t_user VALUES(uuid_short(), CONCAT('姓名',ROUND(RAND()*50)), ROUND(RAND()*100));1.导入数据到HDFS

sqoop import --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456 --table t_use

命令会启动一个job mapreduce 程序导入数据

验证导入到hdfs上的数据:

hdfs dfs -ls /user/hadoop/t_use

hdfs dfs -cat /user/hadoop/t_user/part-m-0000*

注:

1)默认设置下导入到hdfs上的路径是: /user/{user.name}/tablename/(files),比如我的当前用户是hadoop,那么实际路径即: /user/hadoop/t_user/(files)。

如果要自定义路径需要增加参数:--warehouse-dir 比如:

sqoop import --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456 --table t_user --warehouse-dir /user/test/sqoop

2)若表是无主键表的导入需要增加参数  --split-by xxx  或者 -m 1

Sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域分配到不同map中.每个map中再处理数据库中获取的一行一行的值,写入到HDFS中.同时split-by根据不同的参数类型有不同的切分方法,如比较简单的int型,Sqoop会取最大和最小split-by字段值,然后根据传入的num-mappers来确定划分几个区域。

sqoop import --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456 --table t_user  --split-by 字段名

2.导入数据到Hive

增加参数 –hive-import

sqoop import --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456 --table t_user --warehouse-dir /user/sqoop --hive-import --create-hive-table

验证导入到hive上的数据:

hive>show tables;

hive>select * from t_user;

3.把数据从hdfs导出到mysql中

复制表结构:create table t_user1 select * from t_user where 1=2;

sqoop  export  --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456 --table t_user1  --export-dir '/user/hadoop/t_user/part-m-00000' --fields-terminated-by ','

4.列出mysql数据库中的所有数据库

sqoop list-databases --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456

5.连接mysql并列出数据库中的表

sqoop list-tables --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456

6.将关系型数据的表结构复制到hive中,只是复制表的结构,表中的内容没有复制

sqoop create-hive-table --connect jdbc:mysql://192.168.1.93/test --username hive --password 123456 --hive-table t_user1  --fields-terminated-by "\t"  --lines-terminated-by "\n";

参数说明:

--fields-terminated-by "\0001"  是设置每列之间的分隔符,"\0001"是ASCII码中的1,它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为","

--lines-terminated-by "\n"  设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;

7.将数据从关系数据库导入文件到hive表中,--query 语句使用

--query 查询语句 如 "select * from t_user"

8.将数据从关系数据库导入文件到hive表中,--columns  --where 语句使用

--columns 列名 如:"id,age,name"

--where  条件 如:"age > 40"

相关阅读

通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据 http://www.linuxidc.com/Linux/2013-06/85817.htm

[Hadoop] Sqoop安装过程详解 http://www.linuxidc.com/Linux/2013-05/84082.htm

用Sqoop进行MySQL和HDFS系统间的数据互导 http://www.linuxidc.com/Linux/2013-04/83447.htm

Hadoop Oozie学习笔记 Oozie不支持Sqoop问题解决 http://www.linuxidc.com/Linux/2012-08/67027.htm

Hadoop生态系统搭建(hadoop hive hbase zookeeper oozie Sqoop) http://www.linuxidc.com/Linux/2012-03/55721.htm

Hadoop学习全程记录——使用Sqoop将MySQL中数据导入到Hive中 http://www.linuxidc.com/Linux/2012-01/51993.htm

原文链接:http://www.linuxidc.com/Linux/2016-09/135129.htm

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在TBDS部署sqoop组件及抽取数据至hive的使用方法

    导语:本身TBDS平台不提供sqoop组件,若用户想在TBDS平台上使用sqoop抽取外部数据导入至TBDS平台,需要单独部署sqoop组件。

    袁宋
  • Sqoop——将关系数据库数据与hadoop数据进行转换的工具

    Sqoop的输入输出/导入导出是相对于文件系统HDFS的, 因此HDFS的导入导出如图1,图2

    时间静止不是简史
  • 干货:Sqoop导入导出数据练习

    sqoop简介 1,sqoop:sql-to-hadoop, sqoop是连接关系型数据库和hadoop的桥梁: (1),把关系型数据库的数据导入到hadoo...

    Spark学习技巧
  • Sqoop安装

    我上传到hadoop01这台服务器,因为hadoop01是我的hadoop集群的一个节点,也安装了hive

    CoderJed
  • [998]sqoop使用入门

    sqoop是apache旗下,用于关系型数据库和hadoop之间传输数据的工具,sqoop可以用在离线分析中,将保存在mysql的业务数据传输到hive数仓,数...

    周小董
  • 基于OGG和Sqoop的TBDS接入方案系列-Sqoop与腾讯大数据套件TBDS的集成示例介绍

    Oracle里存储的结构化数据导出到Hadoop体系做离线计算是一种常见数据处置手段,此案例介绍了一个利用Sqoop将数据从Oracle离线导入到腾讯大数据套件...

    Aron 陈豪朗
  • 数据搬运组件:基于Sqoop管理数据导入和导出

    Sqoop是一款开源的大数据组件,主要用来在Hadoop(Hive、HBase等)与传统的数据库(mysql、postgresql、oracle等)间进行数据的...

    知了一笑
  • 【Sqoop】CDH版Hadoop、Hive及Sqoop的伪分布式环境搭建

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/...

    魏晓蕾
  • Hive 1.2.1&Spark&Sqoop安装指南

    本文的安装参照《Hive 0.12.0安装指南》,内容来源于官方的:GettingStarted,将Hive 1.2.1安装在Hadoop 2.7.1上。本...

    一见
  • Sqoop学习之路

    Sqoop (SQL to Hadoop) 是Apache顶级项⽬,官⽹地址:http://sqoop.apache.org.

    白贺
  • Hadoop学习笔记—18.Sqoop框架学习

      Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易。Apache Sqoop正在加紧帮助客户将重要数据从数据库移到Hadoop...

    Edison Zhou
  • 使用Sqoop从Postgresql中导入数据到Hive中

    这里假定已经准备好了现成的Hadoop,Hive,Hbase,Zookeeper和一个postgresql数据库。

    kongxx
  • 企业级数据迁移(sqoop建议收藏)

    在做数据导出之前,我们看一下已经完成的操作:数据分析阶段将指标统计完成,也将统计完成的指标放到Hive数据表中,并且指标数据存储到HDFS分布式文件存储系统。

    大数据老哥
  • Sqoop简介以及安装

    云飞扬
  • hive学习笔记之八:Sqoop

    Sqoop是Apache开源项目,用于在Hadoop和关系型数据库之间高效传输大量数据,本文将与您一起实践以下内容:

    程序员欣宸
  • 大数据技术之_12_Sqoop学习_Sqoop 简介+Sqoop 原理+Sqoop 安装+Sqoop 的简单使用案例+Sqoop 一些常用命令及参数

      Sqoop 是一款开源的工具,主要用于在 Hadoop(Hive) 与传统的数据库 (mysql,postgresql,...) 间进行数据的高校传递,可...

    黑泽君
  • 快速学习-Sqoop入门与简介

    Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如...

    cwl_java
  • 大数据技术之Sqoop

    Apache Sqoop(TM)是一种旨在有效地在Apache Hadoop和诸如关系数据库等结构化数据存储之间传输大量数据的工具。

    卡其
  • sqoop之旅1-初识与安装

    sqoop是Apache旗下一款Hadoop和关系型数据服务器之间传送数据的的工具,其核心功能主要是两点:

    皮大大

扫码关注云+社区

领取腾讯云代金券