问题标签 [sqoop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1299 浏览

java - 如何使用 sqoop api 执行 sqoop 命令?

我知道如何从命令行执行 import、import-all-tables 和其他命令。

是否有用于 sqoop 1.4.2 的 Java API,以便我可以直接从命令行执行这些命令?如果是,如何?

sqoop Java 文档或简单示例的链接将非常有帮助!

0 投票
2 回答
293 浏览

hadoop - 使用安装在 Apache Hadoop 和 Cloudera Hadoop 中的 apache sqoop 有什么区别?

为什么 Apache Sqoop 建议使用 Cloudera Hadoop 而不是 Apache Hadoop?

是否有任何与性能相关的问题?

0 投票
0 回答
319 浏览

java - 小文件的多个映射器

我正在开发基于 Hive 的 ETL 应用程序。一项功能要求是我们将 Hive 中的一些数据导出到 Teradata(这是正在使用的现有解决方案),反之亦然。我的问题与出口有关。

我正在使用带有 Teradata 连接器的 sqoop 来导出 HDFS 文件。有些文件虽然有一百 K 条记录,但非常小 ~ 7MB。所以 sqoop 在导出时只使用一个映射器(我指定了 -m 选项,但它不起作用)。这成为一个相当缓慢的过程。

有没有办法在集群中的多个映射器之间划分单个文件(小于 HDFS 块大小)中的数据?

(由于 sqoop 在映射器之间划分行,因此导入速度很快,这已成为一个比较点,我必须使导出工作更快)

编辑:- 软件版本:
Hadoop:MapR M3 - hadoop 0.20
Sqoop:1.4.2
Teradata Connector for Sqoop:1.0.5

0 投票
1 回答
1195 浏览

java - 将数据从 API 加载到 HBase

我正在使用一项 3rd 方服务,它聚合数据并公开 REST API 以访问它。

我现在正在尝试获取这些数据并将其加载到我们的本地 HBase 集群上。我创建了一个 java 应用程序,它从该 3rd 方服务中获取数据,对其进行处理并使用 HBase 客户端 API 将其加载到我们的集群上。对于这个应用程序,我必须手动运行它,并且不确定有多少 HBase 客户端 API 可以有效地加载批量数据。

我遇到了 Sqoop 和 Cascading-dbmigrate 从 RDBMS 进行批量传输。我的问题是:是否有任何类似的工具可以从 REST API 进行批量数据传输?另外,定期同步数据。

感谢 ArunDhaJ http://arundhaj.com

0 投票
1 回答
1615 浏览

oracle - 如何使用 Sqoop 将特定用户的所有(且仅)表从 Oracle 数据库导入 Hive

我有一个包含很多表(超过 600 个)的数据库,并希望使用 sqoop 将它们全部导入 Hive。这就是我使用的命令:

导入总是失败,因为 sqoop 尝试导入一些不属于用户的 oracle 系统表。

list-tables 列出了与以下 sql 查询相同的表:

相反,我想列出并导入(我猜它是相同的表)该查询将使用的相同表:

有没有办法通过 sqoop 限制导入表?如果没有,有没有办法以某种方式配置用户权限,这样“select * from all_tables”会给我与“select * from user_tables”相同的表?

谢谢

0 投票
1 回答
2024 浏览

mysql - sqoop 导出mysql分区

我正在尝试使用 sqoop 从分区的配置单元表中导出到 mysql。

起初我试着做

命令错误说

当我指向分区目录时

命令失败说

我还尝试在没有分区键的情况下重新创建 mysql 表,创建分区 mysql 表,一切都失败并显示相同的错误消息

0 投票
1 回答
552 浏览

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

我需要将 RDBMS 表中的数据导入远程 Hive 机器。我怎样才能使用 Sqoop 实现这一点?

简而言之,如何在导入命令中指定 hive 数据库名称和 hive 机器 i/p?

请帮助我使用适当的 sqoop 命令。

0 投票
3 回答
1681 浏览

hadoop - 带有按时间戳分区的配置单元表的 sqoop 导出问题

我无法 sqoop 导出按时间戳分区的配置单元表。

我有一个按时间戳分区的配置单元表。它创建的 hdfs 路径包含我认为导致 sqoop 问题的空格。

fs -ls 2013-01-28 16:31 /user/hive/warehouse/my_table/day=2013-01-28 00%3A00%3A00

从 sqoop 导出的错误:

13/01/28 17:18:23 错误 security.UserGroupInformation: PriviledgedActionException as:brandon (auth:SIMPLE) 原因:java.io.FileNotFoundException: 文件不存在: /user/hive/warehouse/my_table/day=2012- 10-29 00%3A00%3A00 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimes(FSNamesystem.java:1239) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem. java:1192) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1165) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1147)在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:383) 在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB。getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:170) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:44064) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call (ProtobufRpcEngine.java:453) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:898) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693)在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1689) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:396 ) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:1687) 的 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332)170) 在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453) 的 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:44064) ) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:898) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693) 在 org.apache.hadoop .ipc.Server$Handler$1.run(Server.java:1689) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache。 hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:1687)170) 在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453) 的 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:44064) ) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:898) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693) 在 org.apache.hadoop .ipc.Server$Handler$1.run(Server.java:1689) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache。 hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:1687)callBlockingMethod(ClientNamenodeProtocolProtos.java:44064) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java: 898) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1689) 在 java.security .AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop .ipc.Server$Handler.run(Server.java:1687)callBlockingMethod(ClientNamenodeProtocolProtos.java:44064) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java: 898) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1689) 在 java.security .AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop .ipc.Server$Handler.run(Server.java:1687)898) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1689) 在 java.security .AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop .ipc.Server$Handler.run(Server.java:1687)898) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1689) 在 java.security .AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop .ipc.Server$Handler.run(Server.java:1687)

如果你执行 fs -ls /user/hive/warehouse/my_table/day=2013-01-28 00%3A00%3A00 ls: /user/hive/warehouse/my_table/day=2013-01-28': No such file or directory ls:00%3A00%3A00': No such file or directory

如果添加引号,它会起作用:brandon@prod-namenode-new:~$ fs -ls /user/hive/warehouse/my_table/day="2013-01-28 00%3A00%3A00" 找到 114 个项目 -rw-r --r-- 2 布兰登超级组 4845 2013-01-28 16:30 /user/hive/warehouse/my_table/day=2013-01-28%2000%253A00%253A00/000000_0 ...

0 投票
1 回答
1542 浏览

mysql - CentOS 上的 sqoop 导出

我想使用来自 Hive => MySQL 的 sqoop-export 我在下面执行的命令有效:

当我在本地机器上执行命令时,它可以工作。但是当我在服务器上尝试它时它没有。

本地机器:Ubuntu 12.10 和 MySQL 5.5.28-0ubuntu0.12.10.2

服务器:CentOS 5.6 和 MySQL 5.0.95-log

Hadoop/Hive/Sqoop 的版本相同。

我将 hadoop/hive/sqoop 从我的电脑复制到服务器,并且两者都在服务器上运行良好。

创建表操作正确。

但是为什么sqoop会出错呢?

日志如下。

0 投票
1 回答
6709 浏览

hadoop - Sqoop 导入作业因任务超时而失败

我试图使用 sqoop 将 MySQL 中的 1 TB 表导入 HDFS。使用的命令是:

sqoop import --connect jdbc:mysql://xx.xx.xxx.xx/MyDB --username myuser --password mypass --table mytable --split-by rowkey -m 14

执行 bounding vals 查询后,所有映射器都启动,但一段时间后,任务因超时(1200 秒)而被终止。我认为这是因为执行select在每个映射器中运行的查询所花费的时间超过了为超时设置的时间(在 sqoop 中似乎是 1200 秒);因此它无法报告状态,并且该任务随后被杀死。(我也尝试过 100 GB 数据集;由于多个映射器超时,它仍然失败。)对于单个映射器导入,它工作正常,因为不需要过滤结果集。0在 sqoop 中使用多个映射器时,是否有任何方法可以覆盖映射任务超时(比如将其设置为或非常高的值)?