IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 猿创征文|大数据之Sqoop数据导入操作 -> 正文阅读

[大数据]猿创征文|大数据之Sqoop数据导入操作

Sqoop——数据导入

Sqoop,一个用于Hadoop和结构化数据存储之间进行高效传输大批量数据的工具:

将数据从关系型数据库管理系统导入到Hadoop系统中

将数据从Hadoop系统中抽取并导出到关系型数据库。

Sqoop简介以及使用

Sqoop底层实现原理

Sqoop的核心设计思想是利用Map Reduce加快数据传输速度。

特点
  • 优点:可以将跨平台的数据进行整合;
  • 缺点:不灵活。

Sqoop的重要关键词

  • import:从关系型数据库到Hadoop;
  • export:从Hadoop到关系型数据库。

Sqoop命令执行

常见命令执行参数

通过Sqoop加不同参数可以执行导入导出,通过sqoop help可以产看常见的命令行

在这里插入图片描述

Sqoop运行的时候不需要启动后台进程,直接执行Sqoop命令加参数即可。

查看数据库
sqoop list-databases \
--connect jdbc:mysql://localhost:3306 \
--username root \
--password 123456;
通过文件传递参数

文件 config.conf

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

命令:

sqoop --options-file config.conf

Import

连接数据库
sqoop import \
--connect jdbc:mysql://database.example.com/databaseName \
--username xxxx \
--password xxxxxx;
#指定用户名和密码来连接数据库
sqoop import \
--connect jdbc:mysql://localhost:3306/mysql \
--username root \
--password 123456;
查看所有表
sqoop list-tables \ 
--connect jdbc:mysql://localhost:3306/mysql \
--username root \
--password 123456;
将数据导入HDFS
指定表导入

数据在Linux下的Mysql数据

在本地MySql数据库中新建一个testdb数据库,建表test表并写入数据

使用--table参数可以指定具体的表导入到HDFS,譬如用 --table test,默认情况下是全部字段导入,如下:

sqoop import \
--connect jdbc:mysql://localhost:3306/testdb \
--username root \
--password 123456 \
--table test \
--target-dir hdfs://localhost:9820/sqoopdata/test1 \
--delete-target-dir
#将localhost改为IP地址

使用hdfs的命令查询结构

hdfs dfs -cat /sqoopdata/test1/par*
指定列导入

想要导入某几列,可以使用--columns,如下:

sqoop import \
--connect jdbc:mysql://localhost:3306/testdb \
--username root \
--password 123456 \
--table test \
--columns 'id,name' \
--target-dir hdfs://localhost:9820/sqoopdata/test2 \
--delete-target-dir
指定条件导入

在导入表的时候,也可以通过指定where条件来导入,具体参数使用 --where,譬如要导入的记录,可以用下面参数:

sqoop import \
--connect jdbc:mysql://localhost:3306/testdb \
--username root \
--password 123456 \
--table test \
--columns 'id,name' \
--where 'id=01' \
--target-dir hdfs://localhost:9820/sqoopdata/test2 \
--delete-target-dir
指定sql导入

Sqoop可以通过自定义的sql来进行导入,通过--query 参数来进行导入,这样就最大化的用到了Sql的灵活性.如下:

sqoop import --connect jdbc:mysql://localhost:3306/testdb \
--username root --password 123456 \
--query 'select id,name,age from test WHERE id=01 and $CONDITIONS' \
--target-dir hdfs://localhost:9820/sqoopdata/test2 \
--delete-target-dir \
--split-by id \
-m 1
#表没有主键,使用--split-by指定执行split的字段
#表没有主键,需要指定map task的个数为1才能执行

在通过--query来导入数据时,必须要指定--target-dir

将数据导入到Hive

示例代码:

sqoop import --connect jdbc:mysql://localhost:3306/testdb \
--username root \
--password 123456 \
--table test \
--hive-import \
--hive-overwrite \
--hive-table "test3" \
--hive-database Testdb \
-m 1
导入填充空值数据
sqoop import --connect jdbc:mysql://localhost:3306/testdb \
--username root --password 123456 \
--table test \
--delete-target-dir \
--target-dir hdfs://localhost:9820/sqoopdata/test \
--null-string '\\N' \
--null-non-string '0'
关键参数
-null-string '\\N'  ## 遇到空字符串会填充\N字符
--null-non-string '0' # 遇到空数字会填充0
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:18:22  更:2022-09-04 01:18:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:33:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码