Sqoop1.4.6使用指南

xiaoxiao2021-02-28  120

sqoop使用指南

一、sqoop介绍

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

二、sqoop数据导入(以SQLServer数据库为例)

(1)、全表导入 全表导入,顾名思义就是将关系型数据库指定的表数据导入到HDFS文件系统的根目录。 sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 --table glass #--connect:指定数据库JDBC链接字符串并且指定数据库名jdbc:sqlserver://192.168.1.116:1433;database=movielens #--username:指定数据库用户名 #--password:指定数据库密码 #--table:指定数据库表名 (2)、全表导入到HDFS文件系统指定文件夹 顾名思义,就是将关系型数据库指定的表数据导入到HDFS文件系统的指定文件目录。指定的文件夹必须不能存在,sqoop会拒绝向已经存在的文件夹写入,以避免覆盖数据。 sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 --table glass --target-dir /movielens/glass #--connect:指定数据库JDBC链接字符串并且指定数据库名jdbc:sqlserver://192.168.1.116:1433;database=movielens #--username:指定数据库用户名 #--password:指定数据库密码 #--table:指定数据库表名 #--target-dir:指定存放数据的HDFS文件系统目录 (3)、部分表导入到HDFS文件系统 顾名思义,就是将关系型数据库指定的表数据中的部分数据导入到HDFS文件系统中。 sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 \ --query 'SELECT top 10 * FROM glass WHERE $CONDITIONS' --split-by 'no' --target-dir /movielens/glass #--query :query查询语句'SELECT top 10 * FROM glass WHERE $CONDITIONS',以确定需要导入的数据。 #--split-by 'no': sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 \ --table glass --where "no = '1'" --target-dir /movielens/glass1 #--where:选取"no = '1'"的这条数据导入到HDFS文件系统 (4)、保护密码 顾名思义,就是在输入数据库的密码的时候,命令sqoop从键盘键入中获取密码 sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa -P \ --table glass --where "no = '1'" --target-dir /movielens/glass2 #--P:命令sqoop从键盘键入中获取密码 (5)、使用其他符号分割数据字段 顾名思义,在sqoop传导数据时,默认的数据字段分割符为',',用户可以自定义数据字段分割符。 sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=movielens' --username sa --password 123 \ --table glass --where "no = '1'" --target-dir /movielens/glass6 --fields-terminated-by '\t' #--fields-terminated-by:使用用户自定义的符号来作为字段分割符 sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=DocContent_F10News' --username sa --password 123 \ --table DocContent --where " DOCID = '888888'" --split-by 'DOCID' --target-dir /DocContent_F10News/DocContent sqoop import --connect 'jdbc:sqlserver://192.168.1.116:1433;database=DocContent_F10News' --username sa --password 123 \ --table DocContent --where " DOCID = '888888'" --split-by 'DOCID' --target-dir /DocContent_F10News/DocContent3 \ --fields-terminated-by '#' --mysql-delimiters --hive-drop-import-delims Drops \n, \r, and \01 from string fields when importing to Hive. --hive-drop-import-delims:只能删除字段中的\n, \r, and \01 暂时还没有找到方法来清除字段内的'\t'
转载请注明原文地址: https://www.6miu.com/read-50647.html

最新回复(0)