hive - 当少数表没有主键时,sqoop import-all 具有并行性
问题描述
我想从 Mysql 的模式中导入所有具有并行性的表。架构中很少有表有主键,也很少有没有。如果我们设置没有主键的映射器(--m>1)表会失败。
我们如何以并行方式导入所有表?
解决方案
我完全同意@leftjoin 关于PK 的回答。
还有另一种实现并行性的方法,您可以将其用于 RDBMS。您可以使用--split-by <<column>> -m no_of_mappers
.
这告诉 sqoop 在将数据导入 hdfs 时使用哪一列来创建拆分。这不需要是唯一的,可以是数据在某种程度上均匀分布的任何列,例如 org_id 或 department_id (INT)。Sqoop 将触发 MAX(col) 和 MIN(COL),然后根据这些值拆分数据。然后拆分每个映射器的源数据以导入。您可以理解,如果表大小很大来计算最大值和最小值,这可能需要几分钟。
例如,对于一个 1000 行的表,--split-by dept_id -m 4
.
假设我们有 6 个部门,sqoop 会将数据分成 4 个部分 - 部门 1、部门 2 和 3、部门 4、部门 5 和 6。请注意:这只是一个示例,实际分布可能会有所不同。
推荐阅读
- linux - 使用 Vagrant 在 Ubuntu 上安装 Jenkins - 无 HTTP 访问
- makefile - 我的 makefile 正在重建 .o 即使 .c 较旧
- c# - 创建类型 Matrix,它封装了实(双)类型的二维数组矩阵块
- python - 您如何(逐行)读取 Python 压缩文件夹中的多个 .gz 文件而不创建临时文件?
- python - 重叠小部件的定位
- ansible - 通过 Ansible 查找包含程序的所有 CICS 区域
- javascript - Telegram bot .hears()-具有多个触发器的方法?
- wordpress - 使用子主题 WooCommerce 时缺少“storefront-handheld-footer-bar”
- mysql - 使用 gcp cloud sql 代理时如何启用 rewriteBatchStatements?
- azure-logic-apps - 在 Microsoft Power Automate 或 Azure 逻辑应用中计算文件的 md5 校验和