Sqoop 导入查询以从表中传输 1000 条随机记录?

Posted

技术标签:

【中文标题】Sqoop 导入查询以从表中传输 1000 条随机记录?【英文标题】:Sqoop import query to transfer 1000 random records from a table? 【发布时间】:2018-06-24 11:39:10 【问题描述】:

我有一个包含大约 100000 条记录的表,并希望从该表中导入 1000 条随机记录

有人可以帮忙吗:)

sqoop 导入\ --连接 jdbc:mysql://localhost:3306/userdb \ --用户名根\ --table emp --m 1

【问题讨论】:

【参考方案1】:

Sqoop 只是将数据从 mysql 传输到 hdfs 或 hdfs 到 mysql 的工具,因此没有任何直接命令可以执行此操作,但是可以使用这样的查询来执行此操作

查询:- --query "select * from my_table order by rand() limit 1000 AND \$CONDITIONS" 它将帮助您导入或导出 1000 行表格。

【讨论】:

【参考方案2】:

没有这样的随机导入命令,但您可以使用--query 选项将记录限制为仅导入 1000 条记录。由于您有 MySQL 数据库,您可以使用以下命令:

sqoop import --connect "$CONNECT_STRING" \ --query "select $source_column from $SOURCE_TABLE_NAME where \$CONDITIONS limit 1000" \ --username $USER_NAME --password $PASSWORD \ --target-dir $TARGET_DIRECTORY_NAME -m 1

您还可以使用--query 选项传递任何自定义查询。

【讨论】:

我想我们已经接近内部解决方案 --query 我们可以编写像 SELECT * FROM table ORDER BY RAND() LIMIT 1000 这样的 sql 查询;对吗? 是的,您可以使用 --query 选项指定任何查询。

以上是关于Sqoop 导入查询以从表中传输 1000 条随机记录?的主要内容,如果未能解决你的问题,请参考以下文章

查询以从表中仅获取一项

如何编写 SQL 查询以从表中提取 50% 的记录?

将 SQL Server 存储过程转换为 Oracle 过程以从表中查询

MySQL - 查询临时表以从表中检索 2 行

从表中获取最后 200 条记录 [关闭]

如何从表中逐块获取数据?