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 条随机记录?的主要内容,如果未能解决你的问题,请参考以下文章