当前位置: 首页 > article >正文

Sqoop 常用命令

Sqoop 是用于在 Hadoop 和关系型数据库(如 MySQL、Oracle 等)之间高效传输数据的工具。以下是常用的 Sqoop 命令及示例:
 

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY, -- 自增主键,用于唯一标识每一行
    name VARCHAR(255) NOT NULL,        -- 名称,字符串类型,不允许为空
    gender ENUM('Male', 'Female', 'Other') NOT NULL, -- 性别,枚举类型,限制为三种值之一,不允许为空
    age INT NOT NULL,                  -- 年龄,整数类型,不允许为空
    income DECIMAL(10, 2) NOT NULL     -- 收入,定点小数类型,总长度10位,其中小数点后2位,不允许为空
);

INSERT INTO employees (name, gender, age, income) VALUES 
('张三', 'Male', 30, 5000.00),
('李四', 'Female', 25, 6000.50),
('王五', 'Other', 22, 4500.75);

 Sqoop 命令核心结构

sqoop [通用参数] <操作类型> [操作参数] 

常用操作类型

操作类型功能描述
import将数据从关系型数据库导入到 HDFS/Hive/HBase
export将 HDFS 数据导出到关系型数据库
list-databases列出数据库中的所有数据库名
list-tables列出指定数据库中的所有表名
eval直接执行 SQL 查询并显示结果

通用参数

参数说明
--connect <jdbc-url>JDBC 连接字符串(必填)
--username <user>数据库用户名
--password <pass>数据库密码(建议改用 -P 交互输入)
--driver <class>指定 JDBC 驱动类(如 Oracle 的 oracle.jdbc.OracleDriver
--verbose显示详细日志

 

 执行sql语句

sqoop eval \
--connect jdbc:mysql://localhost/mydatabase \
--username root \
--password 123456 \
--query "select * from employees"

 

 

生成 Hive 表结构 create-hive-table

关键参数说明

参数说明
--connect源数据库的 JDBC 连接地址(如 MySQL)
--table源数据库的表名(需复制的表结构)
--hive-table目标 Hive 表名(格式:数据库名.表名,默认在 default 库创建同名表)
--hive-overwrite若 Hive 表已存在,则覆盖表结构(默认跳过)
--map-column-hive手动指定字段类型映射(如 id=STRING,name=STRING

 

sqoop create-hive-table \
  --connect jdbc:mysql://源数据库地址:端口/数据库名 \
  --username 用户名 \
  --password 密码 \
  --table 源表名 \
  --hive-table hive数据库名.hive表名  # 可选,默认在 `default` 数据库创建同名表

导入前

mysql 表结构 

hive 表

导入后

 

数据导入(import)hdfs

sqoop import \
  --connect jdbc:mysql://host:port/db \
  --username user \
  --password pass \
  --table source_table \
  --target-dir /hdfs/path \
  [其他参数]

常用导入参数

参数说明
--table <table>源表名
--columns <col1,col2>指定导入列(默认导入所有列)
--where "<条件>"指定导入数据的过滤条件
--target-dir <path>HDFS 目标目录(默认:/user/<user>/<table>
--delete-target-dir若目标目录存在,先删除
--fields-terminated-by <char>字段分隔符(默认:,
--lines-terminated-by <char>行分隔符(默认:\n
--m <num> 或 --num-mappers <num>并行任务数(默认:4)
--split-by <column>指定并行切分列的字段(通常为数值或日期类型)

 

 

 

 

 

 


http://www.kler.cn/a/598594.html

相关文章:

  • LeetCode(27):移除元素
  • mybatis操作数据库报错Cause: Cannot find class: ${com.mysql.cj.jdbc.Driver}
  • sgpt 终端使用指南
  • python每日十题(6)
  • 贪心算法(9)(java)最优除法
  • 深入解析 Redis 实现分布式锁的最佳实践
  • 基于Spring Boot的二手物品交易管理系统的设计与实现(LW+源码+讲解)
  • 无人机动平衡-如何在螺旋桨上添加或移除材料
  • 2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)
  • 常见中间件漏洞攻略-Jboss篇
  • 社群输出价值重构:AI技术驱动的持续内容生产体系研究
  • 蓝桥杯单片机刷题——串口发送显示
  • Java设计模式之备忘录模式
  • Linux 常用命令 - last 【显示历史登录用户列表】
  • 使用Docker运行 Ollama本地部署 DeepSeek 模型并用Dify实现可视化操作
  • Centos7搭建Zabbix4.x监控HCL模拟网络设备:zabbix-server搭建及监控基础03
  • 音视频学习(三十):fmp4
  • Shell正则表达式
  • fastapi+playwright爬取google搜索1-3页的关键词返回json
  • 《Solidity智能合约开发:从零到一实战指南》大纲