sqoop命令大全和踩坑大全

sqoop命令大全 Sqoop是一个用来将Hadoop(hdfs/hive/hbase)和关系型数据库(如MySQL,Oracle,SQL SERVER,Postgres等)中的数据相互转移的工具,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 官网说明:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.ht... 阅读详情

目录

Import(Mysql到Hive/hdfs)

参数解释

------------dbms相关------------

--connect✳✳

--table --where--columns

--query✳

--m

--split-by id✳✳

------------hdfs相关------------

--as-textfile

--compress

--compression-codec gzip

--null-non-string✳✳

--null-string✳✳

--fields-terminated-by✳

--lines-terminated-by

--target-dir✳

--delete-target-dir✳

------------hive相关------------

--hive-import✳✳

--hive-database

--hive-table✳✳

--hive-partition-key✳

--hive-partition-value✳

--hive-overwrite✳

--hcatalog

------------增量导入相关------------

--incremental lastmodified/append

--check-column

--last-value

Export(Hive/hdfs到mysql)

参数解释

------------dbms相关------------

--connect✳✳

--columns

--table✳✳

------------hdfs相关------------

--export-dir✳✳

--input-fields-terminated-by✳

--input-null-string ✳✳

--input-null-non-string✳✳

------------重复数据处理相关------------

--update-mode✳

--update-key✳


Import(Mysql到Hive/hdfs)

bin/sqoop import \

--connect jdbc:mysql://dream3:3306/test \

--username root \

--password root \

--hive-import \

--hive-table test.src_test_ws \

--as-textfile \

--split-by id \

--null-string '\\N' \

--null-non-string '\\N' \

--query "select * from demo where $CONDITIONS" \

--hive-partition-key part_id \

--hive-partition-value 7 \

--target-dir 'hdfs://dream1:9000/sqoop/test.db/src_test_ws/part_id=7/' \

--delete-target-dir \

-m 2

参数解释

------------dbms相关------------

--connect✳✳

Dbms数据库连接地址

--connect jdbc:mysql://dream3:3306/test \

--username root \

--password root \

--table --where--columns

指定mysql的表,指定where条件,指定迁移字段,【不要用,用下边的—query】

--query✳

#查询导入: --query

#有了--query,就不要有--table了,也不要有--where了,也不要有--columns了 ,会有冲突 而且不要用别的 就用query就够了

# $CONDITIONS条件 : 

where $CONDITIONS 这个在语句中必须有,要么  where id>20  and $CONDITIONS

#为什么呢?

因为sqoop要将你的sql语句交给多个不同的maptask执行,每个maptask执行sql时肯定要按任务规划加范围条件,

所以就提供了这个$CONDITIONS作为将来拼接条件的占位符

#禁用聚合函数

这个sql不要过于复杂而且不允许使用聚合函数,因为会分区处理(除非m=1)

#引号问题,

要么外层使用单引号,内层使用双引号,$CONDITIONS的$符号不用转义,

要么外层使用双引号,那么内层使用单引号,然后$CONDITIONS的$符号需要转义\$

#而且必须指定目标路径 --target-dir

#Must specify destination with --target-dir

#--query 可以指定额外的列

--query 'select *,"xxx" as xx,"ttt" as tt from demo where $CONDITIONS'

--m

分为几个task去运行

--split-by id✳✳

--m 等于1 的话,没有意义。

--m 大于1 如果没有配置,默认找MySQL的表的主键作为split-by对象,如果此时mysql没有主键就会报错

#2022-06-08 02:05:33,676 ERROR tool.ImportTool: Import failed: No primary key could be found for table demo.

--split-by 最好是数字类型(日期类型也可以,max min有意义的就行),如果是string类型运行命令时需要指定 -Dorg.apache.sqoop.splitter.allow_text_splitter=true 否则报错如下

#ERROR tool.ImportTool: Import failed: java.io.IOException:

#Generating splits for a textual index column allowed only in case of

#"-Dorg.apache.sqoop.splitter.allow_text_splitter=true" property passed as a parameter

------------hdfs相关------------

--as-textfile

#指定要生成的文件的类型 默认是--as-textfile

--as-avrodatafile

--as-parquetfile 

--as-sequencefile

--as-textfile  

--compress

--compression-codec gzip

## 如果需要压缩 指定压缩格式

--compress  

--compression-codec gzip

--null-non-string✳✳

--null-string✳✳

数据库中的NULL应该写成什么样的东西

--null-non-string  ‘\\N’            

--null-string <null-str>  \\N’ 

hive默认将hdfs文件中的\N识别为NULL

--fields-terminated-by✳

字段分割符默认’\001’

--lines-terminated-by

换行符,当前默认是\n (\012),暂时没有意义

--target-dir✳

user/【用户名】 /【表名】

数据目标路径,不指定target-dir的时候,默认放到/user/用户名 下

#Output directory hdfs://dream1:9000/user/root/demo already exist

--delete-target-dir✳

# hdfs目标路径已存在会报错,所以可以加上这个自动删除目标文件夹,

------------hive相关------------

--hive-import✳✳

指定本次sqoop迁移的数据要直接导入到hive中

如果同时指定了,hive-table,那么sqoop会自动给创建hive的表。但是不会自动创建不存在的库

CREATE TABLE IF NOT EXISTS `test.demo`(

 `id` INT, `name` STRING, `value` STRING,

 `create_date` STRING, `create_by` BIGINT,

 `update_date` STRING, `update_by` BIGINT,

 `delete_flag` STRING, `versions` INT

)

COMMENT 'Imported by sqoop on 2022/06/08 03:59:10'

PARTITIONED BY (part_id STRING)

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'

LINES TERMINATED BY '\012'

STORED AS TEXTFILE

--hive-database

--hive-table✳✳

hive库名、表名,hive-database一般不用,--hive-table test.demo 一下指定两个,但是在多分区(hcatalog)的时候必须用

--hive-partition-key✳

如果hive目标表是分区表,需要指定分区key,只能指定一个,否则只能用hcatalog

--hive-partition-value✳

如果hive目标表是分区表,需要指定分区value

--hive-overwrite✳

先truncate 然后再导入,如果是分区表,那么就只会清空那个分区的数据,其余分区不受影响,不用这个参数默认就是就是追加

--hcatalog

#处理多分区导入,不支持overwrite,不支持hive-import 而且 必须指定hcatalog-database 否则默认是default库

bin/sqoop import \

--connect jdbc:mysql://dream3:3306/test \

--username root \

--password root \

--table demo \

--null-string '\\N' \

--null-non-string '\\N' \

--hcatalog-database test \

--hcatalog-table demo \

--hcatalog-partition-keys part_id,part_name \

--hcatalog-partition-values 1,2 \

--m 1

------------增量导入相关------------

#增量导入,其实可以用--query来实现,他的作用只是帮你识别那些数据是新的,如果你能自己写sql识别出来,那么不需要增量导入

--incremental lastmodified/append

#--incremental lastmodified/append 

       #lastmodified:会处理修改的数据,常用于modify_time,不支持导入hive

       #append        :只会处理新增数据

--check-column

检测字段

--check-column create_date

--last-value

字段历史值

#--last-value '2022-05-27 10:21:07.0' 

Export(Hive/hdfs到mysql)

bin/sqoop  export \

--connect jdbc:mysql://dream3:3306/test \

--username root \

--password root \

--columns "id,versions" \

--table demo2 \

--export-dir "/user/hive/warehouse/test.db/demo/part_id=14" \

--input-null-string '\\N' \

--input-null-non-string '\\N' \

--update-mode allowinsert  \

--update-key id \

--batch

参数解释

------------dbms相关------------

--connect✳✳

Dbms数据库连接地址

--connect jdbc:mysql://dream3:3306/test \

--username root \

--password root \

--columns

指定迁移字段,不指定的话就是全部字段

--columns "id,versions"

--table✳✳

指定export到哪个表格,必须要预先创建好,否则报错

--table demo2

------------hdfs相关------------

--export-dir✳✳

指定迁移文件地址

这里可以用来指定迁移那个分区的数据,因此如果是分区表那么需要一个分区一个分区的导出

--export-dir "/user/hive/warehouse/test.db/demo/part_id=14"

--input-fields-terminated-by✳

指定hive数据文件的字段分割符,默认是  ‘,’  逗号

--input-fields-terminated-by ‘\001’

--input-null-string ✳✳

--input-null-non-string✳✳

Hdfs文件中的什么样的东西应该视为NULL

--input-null-non-string  ‘\\N’

--input-null-string  ‘\\N’

------------重复数据处理相关------------

--update-mode✳

指定更新模式,

# --update-mode 如果选择updateonly,只会对mysql中已存在的id数据进行更新,不存在的id数据不会插入了

# --update-mode 如果选择allowinsert,既会更新已存在id数据,也会插入新的id数据

--export-dir "/user/hive/warehouse/test.db/demo/part_id=14"

--update-key✳

指定用于识别是同一纪录的主键。

1、如果某次迁移的数据已经存在与dbms中,而且没有指定更新模式,那么就会迁移失败,重复主键错误。

2、如果hive中存在重复数据,而且没有指定更新模式,依然会报错,重复主键错误

Hive

所以,这个参数虽然是非必须的,但是最好配置上!!

Caused by: java.sql.BatchUpdateException: Duplicate entry '2' for key 'PRIMARY'

Sqoop利用sql语句查询导入_导入指定列_指定查询条件导入_将mysql数据库中的数据导入到hdfs中---大数据之Apache Sqoop工作笔记003 通过列来导入数据,可以看到我们这里用--columns表示,只导入id,sex 这两个列。然后我们再来看看 --columns id,sex 和 -- where 组合 可以用嘛。因为我们知道读取数据,我们使用集群获取的,所以mapper,用多个的时候,怎么来保证,下载以后,可以看到也是可以的对吧,说明clumns 和 --where 可以组合使用。然后我们再看,同时使用columns 和 --where可以吗,一会我们试一试。可以看到拼接上--where 就可以了,我们先来试试--where。 阅读详情

相关推荐

Sqoop使用总结

Sqoop基本使用 一、Sqoop 基本命令 二、Sqoop 与 MySQL 三、Sqoop 与 HDFS     3.1 MySQL数据导入到HDFS     3.2 HDFS数据导出到MySQL 四、Sqoop 与 Hive     4.1 MySQL数据导入到Hive     4.2 Hive 导出数据到MySQL 五、Sqoop 与 HBa

石榴姐yyds 897

sqoop导入与导出参数说明

关于sqoop在hdfs与mysql之间导入导出参数的说明

weixin_42430074的博客 5481

解决sqoop2导入hdfs单引号问题

使用sqoop2从mysql导入hadoop时,导入的数据带单引号。是由于sqoop2的一个bug导致,该包上传到sqoop_home/server/lib替换原来的jar包后,重启sqoop server,即可解决。

sqoop详细导入导出数据步骤

前面已经给大家讲过sqoop的安装,如果还没有安装的可以再去看看详细安装流程: sqoop详细安装与环境配置 sqoop的作用前面也说过主要用于做数据迁移,它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库的互相导入。 Sqoop功能 将关系型数据库数据导入HDFS,解决HDFS的数据来源问题,使数据能够方便地进入HDFS。 支持HDFS数据导出到关系型数据库,Hadoop计算出的数据可以方便地写回到数据库中。 支持关系型数据库直接将

zp17834994071的博客 8331

上下文理解的AI增强方案:AI应用架构师的架构洞察

本文将从AI应用架构师的视角,深入探讨“上下文理解”的技术本质、核心挑战,以及一套可落地的上下文增强架构方案。我们会拆解上下文理解的底层需求,分析架构设计中的关键决策,并通过具体案例展示如何构建一个能“记住过去、理解现在、预测未来”的AI系统。三个维度:上下文的内容范围(短期/中期/长期)、数据类型(文本/结构化/多模态)、技术挑战(窗口限制/信息过载/跨会话一致性);三种架构模式:分层上下文存储(热/冷数据分离)、上下文路由(按需筛选)、动态压缩(适配模型窗口);四个关键组件。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 220

深度解析快递柜管理系统的C++实现:设计与实现

本文详细介绍了一个基于C++的快递柜管理系统的设计与实现,包括系统需求分析、架构设计、数据库设计、关键功能模块实现和测试与验证。通过详细的代码示例和理论分析,读者可以全面了解如何开发一个完整的快递柜管理系统。希望本文能够为读者在实际项目开发中提供有价值的参考。

m0_57781768的博客 714

Sqoop-命令大全

Sqoop命令大全 版本 Sqoop-version : 1.4.6 sqoop 1.4.6|7 => hadoop 2.x + hive 1.x + hbase 1.x => hadoop 3.1.3 + hive 3.1.2 + hbase 2.3.5(not support) Sqoop安装 解压并改名 tar -zxvf /opt/download/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/software/ mv /opt

u010692211的博客 2758

VScode中配置 C/C++ 环境,超级详细,问题分析全面,绝对好用

VScode中配置 C/C++ 环境,超级详细,问题分析全面,绝对好用 VScode中配置 C/C++ 环境 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 1. 下载编辑器VScode 1.官网:https://code.visualstudio.com/ 2. 安装VScode(建议附加任务全部勾选; 2. 下载编译器MinGW并解压 官网页面:https://www.mi

m0_46147064的博客 8万+

Sqoop ---- Sqoop一些常用命令及参数

记录了 Sqoop job 的元数据信息,如果不启动该服务,那么默认 job 元数据的存储目录为~/.sqoop,可在 sqoop-site.xml 中修改。将关系型数据库中的数据导入到 HDFS(包括 Hive,HBase)中,如果导入的是 Hive,那么当 Hive 中没有对应表时,则自动创建。这里给大家列出来了一部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码。刚才列举了一些 Sqoop 的常用命令,对于不同的命令,有不同的参数,让我们来一一列举说明。

是微风,是晚霞,是无可替代 3244

WSL2下用QEMU模拟ARM开发板:从编译uboot到调试全流程(附常见错误解决)

本文详细介绍了在WSL2环境下使用QEMU模拟ARM开发板的完整流程,包括uboot编译、内核调试等关键步骤。通过QEMU模拟vexpress-a9开发板,开发者可以高效搭建嵌入式开发环境,解决常见错误并提升开发效率。

solidity8miner的博客 286

绿标短网址app.10086.cn/xxxxx移动短网址缩短接口网址api调用php方式解析

绿标短网址app.10086.cn/xxxxx 移动网缩短接口网址api调用php方式解析 app.10086.cn是移动网站的接口,可以制作移动网等第三方官方网站域名的任意生成接口,由于是认证企业,可以再抖音 微信 qq等第三方渠道正常打开不拦截提示,第三方网址,头条文章等,效果非常号,这里记录下api接口,纯技术php生成,具体规则可以去抖音的开放平台去申请对应接口 。这里用我php模拟抓包获取方式 GET http://www.app10086cn.cn/?i=app.10068.cnHTTP/1.1

qq_20300095的博客 5908

三、Sqoop 全量导入核心命令

在大数据处理过程中,数据库表怎么高效导入到 Hadoop?这一篇我带大家实战讲解 Sqoop 全量导入 的用法,从基础命令到常用参数配置,再到导入到 HDFS、Hive 的各种格式案例,配合实操示例,帮你一步步掌握全量导入技巧。最后还有练习题,供大家动手巩固一下。

专注于 Agent 工程、AI 产品、Harness Engineering、LLM 算法等方向,OpenMathModel、Nivik 等开源项目作者 7万+

SAP MM采购合同创建全解析:ME31K操作与后台逻辑

在SAP ERP的物料管理模块中,采购合同作为框架协议的核心,定义了企业与供应商之间的长期供货关系。它与采购订单不同,合同不直接产生收货或发票,而是为后续采购订单提供数据源。创建合同(事务码ME31K)时,需要区分数量合同与金额合同,并维护抬头、行项目、有效期、价格条件和税码等关键信息。SAP通过源确定机制在创建采购订单时自动匹配合同,同时审批策略、编码范围和输出类型也会影响合同的实际可用性。掌握合同创建逻辑,能有效解决采购订单无法带出合同、审批未触发、价格缺失等高频问题。从ME31K实操出发,系统梳理采购

weixin_30000735的博客 196

Sqoop1 详细使用和避坑指南

经过这么几天的折腾,发现 Sqoop1 真的比 Sqoop2 方便好用的多,Sqoop2 坑真是太多了,搞不定。Sqoop1 坑少也稳定,但是零基础使用过程中也是有几点需要注意的。官方下载:Sqoop 官网 官方使用文档 Sqoop-1.4.6安装部署及详细使用介绍 如果像我一样直接用CDH里边自带的话,方便的地方是环境变量什么的不需要我再去配置了,很方便。 要检查...

maoyg0821的专栏 2734

NX二次开发入门必看:手把手教你搭建开发环境

想顺利开展nx二次开发,第一步就是配置好开发环境。本文详细讲解从安装准备到环境调试的完整流程,结合实际操作细节,帮你避开常见坑点,快速进入nx二次开发的实战阶段。

weixin_31569663的博客 1458

YOLOv11知识蒸馏实战:让小模型拥有大模型90%精度,速度提升3倍的终极教程

在self.alpha = alpha # 蒸馏损失权重self.temperature = temperature # 温度系数,控制分布平滑度# 输出分布蒸馏(KL散度损失)# 中间特征蒸馏(MSE损失,对齐中间层特征)# 总蒸馏损失知识蒸馏是YOLOv11在“小模型高性能部署”场景的“破局之法”——它让小模型能“站在大模型的肩膀上”,兼具速度与精度。从损失函数定义到多阶段训练,再到实战落地,本教程已为你铺就了一条清晰的路径。

m0_64661770的博客 802

oozie调度sqoop踩坑之路(hue配置)

背景: 通过oozie来调度管理sqoop数据抽取流程,一般有两种方法:一是直接使用oozie的sqoop-action,二是将sqoop语句写在shell脚本中,通过shell-action来调度。经过测试,sqoop-action实在是坑多,故采用坑相对较少的shell-action~ 集群环境:CDH 5.13.0 ,其中oozie版本:4.1.0,sqoop版本:1.4.6 ...

Abysscarry的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Sqoop常用命令

Sqoop常用命令一、命令列表二、命令详细解释2.1通用参数:2.2 import相关2.3export 相关2.4 codegen 命令2.4.1 定义解释2.4.2 codegen语法2.4.3 参数2.4.4 例子2.4.5 直接运行jar2.5 create-hive-table2.6 eval 命令2.7 import-all-tables2.8 import-mainframe2.9...

一直打铁 1608

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

踩坑——Sqoop报错ERROR tool.ExportTool: Error during export

@羲凡——只为了更好的活着 踩坑——Sqoop报错ERROR tool.ExportTool: Error during export 控制台打印的报错是 19/04/19 20:17:09 ERROR mapreduce.ExportJobBase: Export job failed! 19/04/19 20:17:09 ERROR tool.ExportTool: Error during ...

@羲凡—只为更好的活着 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

sqoop的import命令和export命令

sqoop的import命令和export命令 一. import命令 数据从mysql导入到hdfs当中 前提:先在MySQL中创建到一个user表 create table user(id int primary key auto_increment,name varchar(20),addr varchar(200)); insert into user(id,name,addr) va...

qq_42604959的博客 542

Sqoop 常用命令

Sqoop 是用于在 Hadoop 和关系型数据库(如 MySQL、Oracle 等)之间高效传输数据的工具。

嗨,来了,累了把,歇息一下,暂时放下一切的纷纷扰扰,享受一份自己独处的时光 1188

Sqoop命令

1、Sqoop Import (进入官网) 因为,sqoop的使用方式是: sqoop COMMAND ARGS。    以下是 sqoopCOMMAND ARGS    以下是 sqoopCOMMAND ARGS   所以,sqoopCOMMAND ARGS 是 选项 含义说明 --connect <jdbc-uri> ...

onway_goahead的博客 1967

【Sqoop-命令】Sqoop相关了解及命令

sqoop是apache旗下一款Hadoop和关系数据库服务器之间传送数据的工具。简单来说,sqoop就是一款数据导入导出工具。导入:从RDBMS到hadoop生态圈的过程。导出:从hadoop生态圈到RDBMS。底层:将导入导出命令翻译成MR任务,执行在YARN平台上,底层是对MR的输入和输出做了定制化操作。【Sqoop-命令】Sqoop相关了解及命令

weixin_53543905的博客 1623

五十八、Sqoop的常用参数及命令

上一篇文章我们讲述了Sqoop的安装已经一些基本操作,本文我们主要来看看它常用的一些参数和命令。Sqoop是一个非常简单的传输工具,我们进行简单的讲述,不在这上面浪费过多的时间,本文是Sqoop部分的最后一篇文章。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~ 目录 一、Sqoop常用的命令 二、Sqoop的公用参数 2.1数据库连接参数 2.2import参数 2.3export参数 2.4 hive参数 三、Sqoop的特有参数 3.1import 3.2expor...

象在舞的技术专栏 2523
上一篇: sqoop mysql->hdfs增量导出
下一篇: yarn上跑的程序日志怎么看
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值