sqoop 增量导入追加模式,带时间戳列

2024-06-08

有人可以帮助我了解 sqoop 增量中追加模式和最后修改模式之间的确切区别吗?

当可以使用附加模式(使用 --check-column 作为时间戳)完成相同的操作时,lastmodified 的需要是什么。它的工作原理相同,并且也会导入更新和插入的记录。


  1. 模式:追加可用于您知道最后一个值的列。
  2. 模式:lastmodified 模式可用于时间戳列。可能很难记住上次修改的时间戳。如果您知道上次修改的时间戳,则可以使用第一种方法。

模式:追加

mysql> describe emp;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | int(11)      | YES  |     | NULL    |       |
| name   | varchar(100) | YES  |     | NULL    |       |
| deg    | varchar(100) | YES  |     | NULL    |       |
| salary | int(11)      | YES  |     | NULL    |       |
| dep    | varchar(10)  | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

使用 sqoop 命令导入数据。

sqoop import \
--connect jdbc:mysql://quickstart:3306/retail_db \
--username retail_dba \
--password cloudera \
-m 3 \
--table emp \
--split-by id \
--columns id,name,deg \
--warehouse-dir /user/sqoop/ \
--delete-target-dir \
--as-textfile

HDFS输出

[cloudera@quickstart lib]$ hadoop fs -ls -R /user/sqoop/
drwxr-xr-x   - cloudera supergroup          0 2017-12-02 13:14 /user/sqoop/emp
-rw-r--r--   1 cloudera supergroup          0 2017-12-02 13:14 /user/sqoop/emp/_SUCCESS
-rw-r--r--   1 cloudera supergroup         70 2017-12-02 13:14 /user/sqoop/emp/part-m-00000
-rw-r--r--   1 cloudera supergroup         64 2017-12-02 13:14 /user/sqoop/emp/part-m-00001
-rw-r--r--   1 cloudera supergroup         86 2017-12-02 13:14 /user/sqoop/emp/part-m-00002


mysql> select * from emp;
+------+---------+--------------+--------+------+
| id   | name    | deg          | salary | dep  |
+------+---------+--------------+--------+------+
| 1201 | gopal   | manager      |  50000 | tp   |
| 1202 | manisha | Proof reader |  50000 | TP   |
| 1203 | php dev | TECH WRITER  |  50000 | AC   |
| 1204 | Nilesh  | Domino dev   |  70000 | AF   |
| 1205 | Vinayak | Java dev     |  50000 | IT   |
| 1206 | Amish   | Cog dev      |  60000 | IT   |
| 1207 | Jatin   | Oracel dev   |  40001 | IT   |
| 1208 | Viren   | Java dev     |  70004 | IT   |
| 1209 | Ashish  | Oracel dev   |  40001 | IT   |
| 1210 | Satish  | Java dev     |  70004 | IT   |
+------+---------+--------------+--------+------+
10 rows in set (0.00 sec)

将新记录插入表中。

mysql> insert into emp values(1211,'Jag', 'be', 20000, 'IT');
Query OK, 1 row affected (0.03 sec)

mysql> select * from emp;
+------+---------+--------------+--------+------+
| id   | name    | deg          | salary | dep  |
+------+---------+--------------+--------+------+
| 1201 | gopal   | manager      |  50000 | tp   |
| 1202 | manisha | Proof reader |  50000 | TP   |
| 1203 | php dev | TECH WRITER  |  50000 | AC   |
| 1204 | Nilesh  | Domino dev   |  70000 | AF   |
| 1205 | Vinayak | Java dev     |  50000 | IT   |
| 1206 | Amish   | Cog dev      |  60000 | IT   |
| 1207 | Jatin   | Oracel dev   |  40001 | IT   |
| 1208 | Viren   | Java dev     |  70004 | IT   |
| 1209 | Ashish  | Oracel dev   |  40001 | IT   |
| 1210 | Satish  | Java dev     |  70004 | IT   |
| 1211 | Jag     | be           |  20000 | IT   |
+------+---------+--------------+--------+------+
11 rows in set (0.00 sec)

增量导入命令

sqoop import \
--connect jdbc:mysql://quickstart:3306/retail_db \
--username retail_dba \
--password cloudera \
--table emp \
--split-by id \
--check-column id \
--incremental append \
--last-value 1210 \
--warehouse-dir /user/sqoop/ \
--as-textfile

导入后

[cloudera@quickstart lib]$ hadoop fs -ls -R /user/sqoop/emp
-rw-r--r--   1 cloudera supergroup          0 2017-12-02 13:14 /user/sqoop/emp/_SUCCESS
-rw-r--r--   1 cloudera supergroup         70 2017-12-02 13:14 /user/sqoop/emp/part-m-00000
-rw-r--r--   1 cloudera supergroup         64 2017-12-02 13:14 /user/sqoop/emp/part-m-00001
-rw-r--r--   1 cloudera supergroup         86 2017-12-02 13:14 /user/sqoop/emp/part-m-00002
-rw-r--r--   1 cloudera cloudera           21 2017-12-02 13:48 /user/sqoop/emp/part-m-00003
[cloudera@quickstart lib]$ hadoop fs -cat /user/sqoop/emp/part-m-00003
1211,Jag,be,20000,IT

模式:最后修改

mysql> describe orders;

+-------------------+-------------+------+-----+---------+----------------+

| Field             | Type        | Null | Key | Default | Extra          |

+-------------------+-------------+------+-----+---------+----------------+

| order_id          | int(11)     | NO   | PRI | NULL    | auto_increment |

| order_date        | datetime    | NO   |     | NULL    |                |

| order_customer_id | int(11)     | NO   |     | NULL    |                |

| order_status      | varchar(45) | NO   |     | NULL    |                |

+-------------------+-------------+------+-----+---------+----------------+

4 rows in set (0.00 sec)    

将订单导入hdfs

sqoop import \
--connect jdbc:mysql://quickstart:3306/retail_db \
--username retail_dba \
--password cloudera \
--table orders \
--split-by order_id  \
--target-dir /user/sqoop/orders \
--as-textfile

导入后

[cloudera@quickstart lib]$ hadoop fs -ls -R /user/sqoop/orders
-rw-r--r--   1 cloudera supergroup          0 2017-12-02 16:01 /user/sqoop/orders/_SUCCESS
-rw-r--r--   1 cloudera supergroup     741597 2017-12-02 16:01 /user/sqoop/orders/part-m-00000
-rw-r--r--   1 cloudera supergroup     753022 2017-12-02 16:01 /user/sqoop/orders/part-m-00001
-rw-r--r--   1 cloudera supergroup     752368 2017-12-02 16:01 /user/sqoop/orders/part-m-00002
-rw-r--r--   1 cloudera supergroup     752940 2017-12-02 16:01 /user/sqoop/orders/part-m-00003

更新订单数据

mysql> select * from orders where order_id=10;
+----------+---------------------+-------------------+-----------------+
| order_id | order_date          | order_customer_id | order_status    |
+----------+---------------------+-------------------+-----------------+
|       10 | 2013-07-25 00:00:00 |              5648 | PENDING_PAYMENT |
+----------+---------------------+-------------------+-----------------+
1 row in set (0.00 sec)

mysql> update orders set order_status='CLOSED', order_date=now() where order_id=10;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from orders where order_id=10;
+----------+---------------------+-------------------+--------------+
| order_id | order_date          | order_customer_id | order_status |
+----------+---------------------+-------------------+--------------+
|       10 | 2017-12-02 16:19:23 |              5648 | CLOSED       |
+----------+---------------------+-------------------+--------------+
1 row in set (0.00 sec)

导入附加数据

sqoop import \
--connect jdbc:mysql://quickstart:3306/retail_db \
--username retail_dba \
--password cloudera \
--table orders \
--split-by order_id  \
--check-column order_date \
--merge-key order_id \
--incremental lastmodified \
--target-dir /user/sqoop/orders1 \
--as-textfile

Output

[cloudera@quickstart lib]$ hadoop fs -ls -R /user/sqoop/orders1
-rw-r--r--   1 cloudera cloudera          0 2017-12-02 16:07 /user/sqoop/orders1/_SUCCESS
-rw-r--r--   1 cloudera cloudera    2999918 2017-12-02 16:07 /user/sqoop/orders1/part-r-00000

Note:如果我们使用与之前相同的目录(订单),则会删除旧文件并创建新部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqoop 增量导入追加模式,带时间戳列 的相关文章

  • 在c中访问数组元素

    下面是在代码块中编译此代码的代码 我收到以下错误消息 1 value required as increment operator 现在我知道了arr 不起作用 但我想知道为什么 include
  • Sqoop导入:复合主键和文本主键

    堆栈 使用 Ambari 2 1 安装 HDP 2 3 2 0 2950 源数据库模式位于 sql server 上 它包含多个表 这些表的主键为 一个varchar 复合 两个 varchar 列或一个 varchar 一个 int 列或
  • Sqoop从hive导出到oracle,具有不同的列名、列数和列顺序

    场景是这样的 我有一个包含 10 列的 Hive 表 我想使用 Sqoop 将数据从 Hive 表导出到 Oracle 表 但目标 oracle 表有 30 个与 hive 表列名称不同的列 另外 oracle 表中的列位置与 hive 表
  • 在子函数中访问循环迭代?

    我正在使用 Google Maps API 在地图上绘制多个点 然而 在下面的点击事件函数中 i始终设置为 4 即迭代循环后的值 note these are actual addresses in the real page var ad
  • 如何使用 sqoop 在 Hive 中创建外部表。需要建议

    使用 sqoop 我可以创建托管表 但不能创建外部表 请让我知道从数据仓库卸载数据并将其加载到 Hive 外部表中的最佳实践是什么 1 仓库中的表是分区的 有些是按日期分区 有些是按状态分区 请将您的想法或做法应用于生产环境 Sqoop 不
  • 为什么我们不能递增 (++) 或递减 (--) 数字文字

    例如 在下面的 JavaScript 代码中 为什么我们在使用变量时不会收到错误 但在使用数字文字时却收到错误 在节点 v6 9 5 上运行 let x 2 console log x 2 let y 2 console log y 3 c
  • MySQL 中的字段递增是原子操作吗?

    我正在制作一个网站 我想在标准 MyISAM 表中增加一个计数器 简化示例 UPDATE votes SET num num 1 如果多个连接执行相同的查询 这会导致问题吗 或者 MySQL 会处理它并锁定表或其他措施以确保不存在冲突吗 写
  • Sqoop - 数据分割

    Sqoop 能够使用以下方式从多个表导入数据 query子句 但不清楚是否能够导入以下查询 按部门号从员工组中选择部门号 平均工资 另一个问题是 sqoop import connect jdbc mysql myserver 1202 u
  • 使用 PHP 中的 UPDATE 增加数据库中的变量

    我从数据库中获取变量 stock 我想通过使用以下代码进行更新来增加我的变量 stock POST stock nom salade req UPDATE ingredients SET stock stock 1 WHERE nom no
  • mysql根据之前的记录增加值

    我有一张桌子 Id Parent Counter 1 A NULL 2 A NULL 3 A NULL 4 B NULL 5 B NULL 6 C NULL 7 D NULL 8 D NULL 我想更新表 使计数器列更新 1 与之前的一样长
  • sqoop导入或导出期间的不良记录处理

    我查看了 sqoop 导出操作提供的选项 但找不到任何处理不良记录的选项 例如 在大量记录中 偶尔可能会出现一个字符 而该字符应该是数字 有没有一种方法可以在 sqoop 中处理这些情况 而不会导致作业失败并在文件中提供错误记录 Sqoop
  • C++:计算游戏中的总帧数

    不是一个很好的标题 但我不知道该起什么名字 无论如何 我正在计算游戏中的总帧数 这样我就可以计算平均 FPS long int 万一游戏持续很长时间 我该怎么做才能确保我的long int不会增加超过其限制吗 如果超过极限会发生什么 Tha
  • Laravel、Faker - 增加生成的日期时间

    我在 Seeder 中使用 Faker 包来生成训练活动的假数据 每个活动都有starts at and ends at字段 我想填充ends at场与DateTime那是在生成的之后starts at 最好相差 1 到 8 小时 或者甚至
  • Sqoop Import --password-file 功能在 sqoop 1.4.4 中无法正常工作

    我使用的是hadoop 1 2 1 sqoop版本是1 4 4 我正在尝试运行以下查询 sqoop import connect jdbc mysql IP 3306 database name table clients target d
  • Javascript 递增运算求值顺序

    我知道后缀 前缀递增 递减运算符的作用 而在 javascript 中 这似乎没有什么不同 虽然我可以很容易地猜出这一行的结果 var foo 10 console log foo foo foo foo foo output 10 11
  • Couchbase/hadoop 连接器:sqoop 作业失败“找到接口 org.apache.hadoop.mapreduce.TaskAttemptContext,但需要类”

    我的配置 CouchBase服务器2 0 Sqoop 1 4 2 针对hadoop版本2 0 0编译 堆栈Hadoop CDH4 1 2 我想使用 CouchBase Hadoop 连接器 http www couchbase com de
  • Hadoop:读取ORC文件并放入RDBMS中?

    我有一个以 ORC 文件格式存储的配置单元表 我想将数据导出到 Teradata 数据库 我研究了 sqoop 但找不到导出 ORC 文件的方法 有没有办法让 sqoop 为 ORC 工作 或者有什么其他工具可以用来导出数据 Thanks
  • Sqoop - 绑定到 YARN 队列

    因此 使用 MapReduce v2 您可以使用绑定到某些 YARN 队列来管理资源和优先级 基本上通过使用 hadoop jar xyz jar D mapreduce job queuename QUEUE1 input output
  • C++ 中的指针递增

    这意味着什么 指针增量指向指针的下一个基类型的地址 例如 p1 p1 is a pointer to an int 这个语句是否意味着指向的地址p1应该更改为下一个地址int或者它应该只增加 2 假设int是 2 个字节 在这种情况下 特定
  • sqoop 通过 oozie 导出失败

    我正在尝试将数据导出到mysql from hdfs通过sqoop 我可以通过 shell 运行 sqoop 并且它工作正常 但是当我通过调用oozie 它出现以下错误并失败 我还包括了罐子 没有描述性日志 sqoop脚本 export c

随机推荐

  • 在 SSE 和 AVX512 寄存器之间移动数据?

    我想将四个 xmm 寄存器移动到一个 zmm 寄存器中 使用 AVX512 指令执行一些计算并将结果返回到 XMM 寄存器 不通过内存来做到这一点的最有效方法是什么 None
  • ExtJs4 Json TreeStore?

    我正在将 ExtJs3 应用程序迁移到 ExtJs4 在 ExtJs3 中 我有一个树网格 它有一个加载器来加载树数据 如下所示 loader new Ext tree TreeLoader dataUrl Department Depar
  • 找到一个带有标签的非活动游戏对象?

    有没有办法找到带有标签的不活动游戏对象 有答案说不 这是不可能的 但那是在 2013 年 最近有什么变化可以做到这一点吗 public GameObject FindWithTag void Update FindWithTag GameO
  • TDD研究

    我知道北卡罗来纳州立大学对 TDD 做了一些研究 他们发表了一篇论文 名为 工业测试驱动开发的初步调查 http collaboration csc ncsu edu laurie Papers TDDpaperv8 pdf NCSU 的其
  • 未知的 MySQL 服务器主机 (PHP)

    当尝试连接到我的数据库服务器时 我遇到了以下问题未知主机 Warning mysqli mysqli mysqli mysqli HY000 2005 Unknown MySQL server host xxxxxxxxxxxxx port
  • 使用 select_ 和starts_with R

    为什么这段代码不起作用 mtcars gt select starts with d Error in eval expr envir enclos could not find function starts with 这是简化的示例 我
  • 运行简单的源 LLVM 传递时出现问题

    我一直在尝试编写一个 LLVM Pass 以下混合this http llvm org docs WritingAnLLVMPass html and this http llvm org docs CMake html cmake out
  • Recyclerview 和处理不同类型的行膨胀

    我正在尝试与新的工作RecyclerView 但我找不到一个例子RecyclerView不同类型的行 卡片视图变得膨胀 With ListView我覆盖getViewTypeCount and getItemViewType 用于处理不同类
  • 让BackgroundWorker按顺序执行多个操作而不冻结表单

    我已经问过一个有点类似的问题here https stackoverflow com questions 1880500 refresh form controls with external program output但我现在有一个后续
  • 使用 set /p 更新批处理脚本的变量始终包含最后一个值

    我正在尝试使用 set p 命令在循环内调整 Windows 批处理变量 键盘输入后 变量仍然包含旧值 我读到通过 set p 设置的变量仅具有本地范围 但我不明白 本地 在这里的真正含义 echo off setlocal EnableD
  • 在逻辑回归中使用排名数据

    当我努力学习这些概念时 我将对此给予最大赏金 我正在尝试在逻辑回归中使用一些排名数据 我想使用机器学习来制作一个简单的分类器来判断网页是否 好 这只是一个学习练习 所以我不期望有很好的结果 只是希望学习 过程 和编码技术 我已将数据放入 c
  • 面试问题 - 在排序数组 X 中搜索索引 i,使得 X[i] = i

    昨天面试时 我被问到了以下问题 考虑一个 Java 或 C 数组X它已排序并且其中没有两个元素是相同的 如何最好地找到索引i这样该索引处的元素也是i 那是X i i 作为澄清 她还给了我一个例子 Array X 3 1 0 3 5 7 in
  • 从 shell 脚本调用 Perl,如何将返回值从 Perl 传递到 shell?

    我成功地从 shell 脚本调用 Perl 脚本 现在我想将 Perl 脚本的返回值传递给 shell 脚本 指示它是否成功 我该怎么做呢 只需使用适当的退出值退出 Perl 脚本即可 exit exit value exit 0 if p
  • 如何在实体框架中保存子关系实体

    我有一个实体框架 v1 项目 我有两个实体 角色和权限 它们彼此之间具有多对多关系 我传入一个要保存的对象 通过 WCF 调用 我自己不从上下文创建它 该对象在多对多关系中具有新条目 我使用 context ApplyPropertyCha
  • 读取静态库中的.pch文件

    我正在创建一个静态库并添加我想要向其他项目公开的所有项目文件 现在 我有一个 pch 文件 其中包含将在整个应用程序中使用的大部分 import 语句 编译此静态库时 由于缺少导入语句 我收到错误 我尝试在 复制标头 和 复制源 中复制 p
  • Hyperledger Fabric 中默认块的大小是多少?

    如果我使用 hyperldger 创建一个新的区块链 我会尝试创建一个链大小的估计 为了了解磁盘空间使用情况 我想知道超级账本结构中默认块的平均大小 先谢谢你了 此致 您可以在下面找到为订购服务提供的默认配置 您实际上可以控制块大小Batc
  • 将 TimeSpan 格式化为时区偏移量

    我怎样才能格式化TimeSpan对象看起来像时区偏移 如下所示 0700 or 0600 我在用着获取Utc偏移量 http msdn microsoft com en us library system timezone getutcof
  • 无法使用 ASP.NET 会话状态提供程序连接到 Redis 服务器

    一段时间以来 我一直在尝试用 Redis 替换 ASP NET Session 多个小时与适用于 Redis 的 Microsoft ASP NET 会话状态提供程序 http blogs msdn com b webdev archive
  • LEX- yylineno 返回 1

    我尝试了很多网上给出的解决方案 我尝试过的解决方案之一来自此链接 Flex yylineno 设置为 1 https stackoverflow com questions 13317634 flex yylineno set to 1 但
  • sqoop 增量导入追加模式,带时间戳列

    有人可以帮助我了解 sqoop 增量中追加模式和最后修改模式之间的确切区别吗 当可以使用附加模式 使用 check column 作为时间戳 完成相同的操作时 lastmodified 的需要是什么 它的工作原理相同 并且也会导入更新和插入