sqoop你要的我都有

sqoop你要的我都有,第1张

sqoop你要的我都有

目录

Sqoop简介:

配置文件:

Sqoop使用


Sqoop简介:

sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。

数据导入:

MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、Hbase 等数据存储系统

数据导出:

从 Hadoop 的文件系统中导出数据到关系数据库 mysql 等

配置文件:

1.环境变量配置

export SQOOP_HOME=/opt/module/ha/sqoop
export PATH=$PATH:$SQOOP_HOME/bin

2.配置sqoop中的

文件

hadoop,hive,hbase需要用到就配置起来即可

Sqoop使用

codegen

作用

生成代码以与数据库记录交互,将关系型数据库中的表映射为一个Java类,在该类中有各列对应的各个字段。

示例

bin/sqoop codegen 
--connect jdbc:mysql://ljx:3306/company 
--username root 
--password 123456 
--table staff 
--bindir /opt/module/sqoop/staff     ###文件夹需要存在
--class-name Staff 
--fields-terminated-by "t"
--outdir /opt/module/sqoop/staff      ###文件夹需要存在

create-hive-table

作用:

将表定义导入 Hive,生成与关系数据库表结构对应的hive表结构

示例:

sqoop create-hive-table --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --table student --hive-table hive-student

eval

作用:

评估 SQL 语句并显示结果,经常用于在import数据之前,了解一下SQL语句是否正确,数据是否正常,并可以将结果显示在控制台。

示例:

sqoop eval --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456 --query "select * from user"

export(很重要)

作用:

从HDFS(包括Hive和Hbase)中将数据导出到关系型数据库中。

示例:

sqoop export --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --table student --export-dir /user/hive/warehous/jjj --input-fields-terminated-by "t" -m 1

import(重要)

作用:

将表从数据库导入 HDFS,(包括Hive,Hbase)中,如果导入的是Hive,那么当Hive中没有对应表时,则自动创建。

示例:将mysql中user表数据导入到hdfs中

 sqoop import --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456 --table user 

import-all-tables

作用:

可以将RDBMS中的所有表导入到HDFS中,每一个表都对应一个HDFS目录

限制条件:

每个表都必须有一个单列主键,或者指定--autoreset-to-one-mapper参数。
每个表只能import全部列,即不可指定列import。

示例:

sqoop  import-all-tables --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --warehouse-dir /all_table

import-mainframe

作用:

直接import主机,这个命令过于暴力,和import-all-tables差别不大,等有需要在研究研究吧。

job

作用:

用来生成一个sqoop任务,生成后不会立即执行,需要手动执行。

示例:

创建job

qoop job --create myjob -- import-all-tables --connect jdbc:mysql://ljx:3006/mysql --username root --password 123456 --warehouse-dir /user/all_user

注意:在使用job中去执行sqoop的指令时需要在 --后面加上一个空格

list-databases

作用:

列出服务器上的可用数据库

示例:

sqoop list-databases --connect jdbc:mysql://ljx:3306 --username root --password 123456

list-tables

作用:

列出数据库中的可用表

示例:

 sqoop list-tables --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456

merge

作用:

将HDFS中不同目录下面的数据合并在一起并放入指定目录中

示例:

[victor@node1 sqoop-1.4.7]$ bin/sqoop merge 
--new-data /tdata/newdata/ 
--onto /tdata/olddata/ 
--target-dir /tdata/merged 
--jar-file /opt/module/sqoop/staff/Staff.jar 
--class-name Staff 
--merge-key id

metastore

作用:

记录了Sqoop job的元数据信息,如果不启动该服务,那么默认job元数据的存储目录为~/.sqoop,可在sqoop-site.xml中修改。

示例:

启动sqoop的metastore服务

 sqoop metastore

version

作用:

显示版本信息

示例:

 sqoop version

同过sqoop将mysql数据传给hive

sqoop import --connect jdbc:mysql://ljx:3306/sample --username root --password 123456 --table student  --hive-import -m 1

        与使用import 导入到hdfs相比只多了 --hive-import ,如果要指定hive的数据库和表可以使用 --hive-database 与--hive-table 来指定

同过sqoop将mysql数据传给hbase

sqoop import --connect jdbc:mysql://ljx:3306/mysql --username root --password 123456 --table help_keyword --hbase-table new_help_keyword --column-family person --hbase-row-key help_keyword_id

注意点:导入时hbase中应该存在指定的表

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5704912.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存