sqopp基础命令简单使用
sqoop安装配置文件
1.解压
2.修改配置文件vim sqoop-env.sh
#添加hadoop家目录 |
3.测试数据库连接列出mysql数据库中的所有数据库
sqoop-list-databases --connect jdbc:mysql://localhost:3306 --username root --password 123456
显示mysql的数据库hive中的表
sqoop-list-tables --connect jdbc:mysql://localhost:3306/hive --username root --password 123456
命令中的test为mysql数据库中的test数据库名称 username password分别为mysql数据库的用户密码
将mysql的表导入 hdfs
sqoop import \ |
将mysql数据到hbase
注意:sqoop目前支持的hbase版本 Hbase <= 0.95.2 ,高版本hbase环境下会报错
sqoop import \ |
将关系型数据的表结构复制到hive中,只是复制表的结构,表中的内容没有复制过去。会在hive中创建表结构
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/userdb --table emp_add --username root --password 123456 --hive-table cp_emp_add |
从数据库增量导入表数据到hdfs中
sqoop import \ |
按需导入表数据子集
我们可以导入表的使用Sqoop导入工具,”where”子句的一个子集。它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。
where子句的语法如下。
–where
下面的命令用来导入emp_add表数据的子集。子集查询检索员工ID和地址,居住城市为:sec-badsqoop import \
--connect jdbc:mysql://master:3306/userdb \
--username root \
--password 123456 \
--where "city ='sec-bad'" \
--target-dir /sqooptest/wherequery \
--table emp_add \
--m 1
按需导入2
sqoop import --connect jdbc:mysql://master:3306/userdb --username root --password 123456 --target-dir /sqooptest/wherequery2 --query 'select id,name,deg from emp WHERE id>1206 and $CONDITIONS' --split-by id --fields-terminated-by '\t' --m 2 |
sqoop import \ |
–query 比where很强大
–query 后面跟sql语句 每个map task需要执行sql查询语句的副本,结果会根据sqoop推测的边界条件分区。query必须包含$CONDITIONS。
这样每个scoop程序都会被替换为一个独立的条件。同时你必须指定–split-by.分区
从关系数据库导入文件到hive中
–会自己在hive中创建表和mysql表名相同,然后回默认存在hive的hdfs目录下sqoop import --connect jdbc:mysql://master:3306/userdb --username root --password 123456 --table emp --hive-import --fields-terminated-by '|' --m 1
–指定表名
指定hive保存的数据库命–hive-table emp_from_mysql 为emp_from_mysqlsqoop import --connect jdbc:mysql://master:3306/userdb --username root --password 123456 --table emp --hive-import --fields-terminated-by '|' --hive-table emp_from_mysql -m1
将hive中的表数据导入到mysql中,在进行导入之前,mysql中的表hive_test必须已经提起创建好了。
导出到mysql(mysql已经建好表)
关键字:export export-dir
–input-fields-terminated-by ‘,’ 指定输出的切分格式 (可以不需要指定)
sqoop export --connect jdbc:mysql://master:3306/userdb --username root --password 123456 --table dim_user_active_day --export-dir /user/hive/warehouse/app.db/dim_user_active_day/day=2017-09-21/dim=0000 --input-fields-terminated-by \\001 |
将hdfs的文件数据导出到mysql
sqoop export \ |
将hive的表数据(hdfs的文件)导出到mysql
sqoop export \ |
案例从MySQL数据库服务器中的emp表导入HDFS
sqoop import \ |
增量导入
增量导入 |
mysql编码问题
一、mysql中的编码 |
可以修改配置文件:[root@Hadoop48 ~]# vi /etc/my.cnf
[mysql]
default-character-set=gbk
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
character_set_server=utf8
init_connect='SET NAMES utf8'
重启mysql,这样确保缺省编码是utf8
从MySQL数据库服务器中的emp表导入HDFS
将日新用户维度表改为一级分区 |