在 RDBMS 中没有主键的 Sqoop 导入

     2023-04-18     24

关键词:

【中文标题】在 RDBMS 中没有主键的 Sqoop 导入【英文标题】:Sqoop import without primary key in RDBMS 【发布时间】:2015-03-19 06:34:01 【问题描述】:

我可以使用 sqoop 将 RDBMS 表数据(表没有主键)导入到 hive 吗?如果是的话,请给sqoop导入命令。

我尝试过使用 sqoop import general 命令,但失败了。

【问题讨论】:

【参考方案1】:

如果您的表没有定义主键,那么您必须提供 -m 1 选项来导入数据,或者您必须提供带有某些列名的 --split-by 参数,否则会出现错误:

ERROR tool.ImportTool: Error during import: No primary key could be found for table <table_name>. Please specify one with --split-by or perform a sequential import with '-m 1'

那么你的 sqoop 命令看起来像

sqoop import \
    --connect jdbc:mysql://localhost/test_db \
    --username root \
    --password **** \
    --table user \
    --target-dir /user/root/user_data \
    --columns "first_name, last_name, created_date"
    -m 1

sqoop import \
    --connect jdbc:mysql://localhost/test_db \
    --username root \
    --password **** \
    --table user \
    --target-dir /user/root/user_data \
    --columns "first_name, last_name, created_date"
    --split-by created_date

【讨论】:

【参考方案2】:

您可以在没有 Primarykey 的情况下将数据从 RDBMS 导入 hive。

首先你需要在hive中创建一个表,然后你需要编写如下代码:

sqoop import \
    --connect jdbc:mysql://localhost/test_db \
    --username root \
    --password **** \
    --table <RDBMS-Table-name> \
    --target-dir /user/root/user_data \
    --hive-import \ 
    --hive-table <hive-table-name> \
    --create-hive-table \
    -m 1 (or) --split-by <RDBMS-Column>

【讨论】:

【参考方案3】:

在使用 1 Mapper 的第一个场景中...如果文件的大小非常大,此过程将需要更多时间来响应或可能会失败。在使用 mapper = 1 之前检查数据的大小。

【讨论】:

【参考方案4】:

快速浏览:

Sqoop 作业失败,错误如下所示“导入时出错:找不到表的主键。请使用--split-by 指定一个或使用'-m 1' 执行顺序导入”

说明: 通常,当您在内部执行 Sqoop 作业时,它会在表中搜索主键。如果没有主键,则 Sqoop 作业将失败并且错误如下所示“导入期间错误:找不到表的主键。请使用 --split-by 指定一个或使用 '-m 1 执行顺序导入’”。该建议描述了这种情况有两种替代方法。

最好的方法是选项 2

    将映射器的数量指定为 1(默认为 4)。因此,通过将映射器的数量指定为 1,该任务将是顺序的并且与单线程任务相同。仅当您以小表为目标时才会成功,如果您正在寻找大型导入,这将失败,因为任务往往会永远运行。

    最好的方法是使用 split-by,您可以在索引列或手动拆分列的基础上指定映射器的数量(使用查询)。

【讨论】:

【参考方案5】:

在您的命令中使用以下内容:

--autoreset-to-one-mapper

Import 如果表没有主键并且没有提供拆分列,则应该使用一个映射器。它不能与--split-by &lt;col&gt; 选项一起使用。

【讨论】:

Sqoop 导入没有拆分

】Sqoop导入没有拆分【英文标题】:Sqoopimportwithoutsplitby【发布时间】:2016-07-2804:24:04【问题描述】:我正在尝试导入具有复合键作为主键的Teradata表。因此设置--nummapper1并在没有--split-by参数的情况下运行它。但是,我遇到了以下... 查看详情

如何在hadoop集群中使用sqoop将表从rdbms导入hive?

】如何在hadoop集群中使用sqoop将表从rdbms导入hive?【英文标题】:howtoimporttablefromrdbmstohiveusingsqoopinhadoopcluster?【发布时间】:2014-06-0209:11:56【问题描述】:我正在尝试使用hadoop集群中的SQOOP将表从RDBMS导入HIVE,我收到以下错误,... 查看详情

使用 sqoop 将表从 RDBMS 导入 HIVE 后约束是不是仍然存在?

...描述】:当我们使用sqoopimport将RDBMS表传输到HIVE时,表的主键等约束会保留吗?即作为主键 查看详情

在 sqoop 中从 RDBMS 导入选定的表

】在sqoop中从RDBMS导入选定的表【英文标题】:ImportselectedtablesfromRDBMSinsqoop【发布时间】:2017-08-0303:04:46【问题描述】:我正在学习sqoop。我想从数据库中导入一些选定的表,该怎么做?如果我在单个数据库中有1000个表,那么我... 查看详情

使用 SQOOP 从 RDBMS 导入数据

】使用SQOOP从RDBMS导入数据【英文标题】:ImportingdatafromRDBMSusingSQOOP【发布时间】:2016-07-1210:36:14【问题描述】:我正在尝试将数据从SQL服务器数据库导入Hive。基本上我将整个数据库(除了一些表)导入Hive。在这里,我有一些我... 查看详情

如何使用 Sqoop 从 RDBMS 将数据导入本地文件系统,而不是 HDFS?

...ux中的本地文件系统文件夹,而不是导入HDFS文件系统。有没有办法做到这一点?【问 查看详情

使用 Sqoop 将数据从 RDBMS 导入 Hive 时,如何在命令行中指定 Hive 数据库名称?

】使用Sqoop将数据从RDBMS导入Hive时,如何在命令行中指定Hive数据库名称?【英文标题】:HowtospecifyHivedatabasenameincommandlinewhileimportingdatafromRDBMSintoHiveusingSqoop?【发布时间】:2013-01-2512:20:49【问题描述】:我需要将数据从RDBMS表导入... 查看详情

我们如何在 SQOOP 中自动执行增量导入?

】我们如何在SQOOP中自动执行增量导入?【英文标题】:HowcanweautomateincrementalimportinSQOOP?【发布时间】:2016-01-1316:04:30【问题描述】:我们如何在SQoop中自动执行增量导入?在增量导入中,我们需要给--last-value从最后一个值开始导... 查看详情

sqoop面试题

...ied--last-value上一次导入结束的时间--mmapTask的个数--merge-key主键补充 查看详情

sqoop的简单使用案例

...-databases--connectjdbc:mysql://hadoop01:3306/--usernameroot--passwordroot1导入数据在Sqoop中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做:导入,即使用import关键字。 1.1RDBMS到HDFS1)确定Mysql服... 查看详情

java示例代码_在Hibernate中使用没有主键的表

java示例代码_在Hibernate中使用没有主键的表 查看详情

当少数表没有主键时,sqoop import-all 具有并行性

】当少数表没有主键时,sqoopimport-all具有并行性【英文标题】:sqoopimport-allwithparallelismwhenfewtablesarenothavingprimarykey【发布时间】:2021-06-1012:27:50【问题描述】:我想从Mysql的模式中导入所有具有并行性的表。架构中很少有表有主... 查看详情

sqoop的简单使用案例(代码片段)

Sqoop的简单使用案例导入数据在Sqoop中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做:导入,即使用import关键字。(1)RDBMS到HDFS&# 查看详情

是否可以在柴油中使用没有主键的表?锈

】是否可以在柴油中使用没有主键的表?锈【英文标题】:Isitpossibletouseatablewithoutprimarykeyindiesel?Rust【发布时间】:2020-08-0203:40:04【问题描述】:我是Rust新手,我正在使用Diesel和Actix-web制作API。我在pgsql和mongodb中有一个数据库,... 查看详情

MySQL phpMyAdmin 从文本导入而没有主键?

】MySQLphpMyAdmin从文本导入而没有主键?【英文标题】:MySQLphpMyAdminimportfromtextwithouthavingtheprimarykey?【发布时间】:2015-07-2014:33:36【问题描述】:如何在不提供文本文件主键的情况下将文本文件中的数据导入数据库?所以我有一个... 查看详情

使用 SQOOP 和 FLUME 将数据从 RDBMS 移动到 Hadoop

...p以及反之亦然的过程中遇到了一些概念。我已经使用SQOOP导入查询将文件从MySQL传输到HDFS。我传输的文件是结构化数据集,而不是任何服务 查看详情

维度建模:如何创建没有代理主键的表?

】维度建模:如何创建没有代理主键的表?【英文标题】:DimensionalModeling:howtocreateatablewithoutSurrogatePrimaryKeys?【发布时间】:2018-11-0816:36:58【问题描述】:据我了解,事实表中没有主键,放置代理键在某种程度上是浪费空间。因... 查看详情

在没有主键的情况下使用 Find 在 dbSet 中查找记录

】在没有主键的情况下使用Find在dbSet中查找记录【英文标题】:FindarecordindbSetusingFindwithoutaprimarykey【发布时间】:2012-09-2216:23:38【问题描述】:我有一个用户表:Users:+ID+Username+...我想使用myDBContext.Users.Find(Username)来查找用户。在... 查看详情