Sqoop导入数据到Hive上

发布 : 2016-01-12 分类 : 大数据 浏览 :
1
2
3
4
5
flume收集日志:主动的和被动的

看文档

sqoop底层是MR,要运行sqoop要有yarn环境,做大数据平台和关系型数据库导入导出工具,必须要有连接数据库的驱动

1.node1节点上已经安装了mysql,并允许远程连接:

1
2
[root@node1 ~]# service mysql start
[root@node1 ~]# service mysql status

2.将数据导入到HDFS中去

2.1.解压sqoop压缩文件到Linux主机上的指定目录

1
2
3
[root@node1 software]# tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/modules
[root@node1 software]# cd /opt/modules
[root@node1 modules]# mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6

2.2.在window上的Mysql客户端远程连接node1,并创建表

2.3.创建option1选项文件

1
[root@node1 sqoop-1.4.6]# vi option1

1
HIVE_HOME,如果配置了,在选项文件中就可以不用配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
官网有配置的详细解释

import
--connect
jdbc:mysql://node1/test
--username
root
--password
123456
--columns
id,name
--where
1=1
--table
t_test
--hive-import
--hive-table
tm_test
--hive-delims-replacement
'\t'
1

2.4.上传mysql驱动包到sqoop的lib目录下

2.5.执行选项文件

1
[root@node1 sqoop-1.4.6]# ./bin/sqoop --options-file option1

3.在Hive中的查看数据是否导入

1
2
hive> desc tm_test;
hive> select * from tm_test;

4.在option1选项文件中增加执行条件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@node1 sqoop-1.4.6]# vi option1

import
--connect
jdbc:mysql://node1/test
--username
root
--password
123456
--columns
id,name
--where
id=2
--table
t_test
--hive-import
--hive-overwrite
--hive-table
tm_test
--hive-delims-replacement
'\t'

4.1.再次执行option1选项文件

1
[root@node1 sqoop-1.4.6]# ./bin/sqoop --options-file option1

1
hive> select * from tm_test;

1
Sqoop现在只支持从HDFS导出数据

5.编辑option3

1
[root@node1 sqoop-1.4.6]# vi option3

5.1.增加执行条件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import
--connect
jdbc:mysql://node1/test
--username
root
--password
123456
--target-dir
/sqoop/data1
--as-textfile
--fields-terminated-by
','
--query
'SELECT id,name FROM t_test WHERE id>1 and $CONDITIONS'
-m
1
--hive-import
--hive-overwrite
--hive-table
tmt_test
--hive-delims-replacement
'\t'

5.2.执行选项文件

1
[root@node1 sqoop-1.4.6]# ./bin/sqoop --options-file option3

5.3.在hive中查询tmt_test表,数据是否导入

1
hive> select * from tmt_test;

6.编辑option4选项文件

1
[root@node1 sqoop-1.4.6]# vi option4

6.1.增加执行条件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import
--connect
jdbc:mysql://node1/test
--username
root
--password
123456
--target-dir
/sqoop/data2
--query
'SELECT id,name FROM t_test WHERE id>1 and $CONDITIONS'
-m
1
--hive-import
--hive-overwrite
--hive-table
tmt_tests
--hive-delims-replacement
'\t'

6.2.执行选项文件

1
[root@node1 sqoop-1.4.6]# ./bin/sqoop --options-file option4

6.3.在hive中查询tmt_test表,数据是否导入

1
hive> select * from tmt_tests;

本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2016/01/12/Sqoop导入数据到Hive/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹