sqoop import 命令中$conditions 子句的意义是什么?
select col1, col2 from test_table where \$CONDITIONS
Run Code Online (Sandbox Code Playgroud)
Sqoop 通过继承 Hadoop 的并行性来执行高效的数据传输。
为了帮助 Sqoop 将您的查询拆分为可以并行传输的多个块,您需要在查询的 where 子句中包含 $CONDITIONS 占位符。
Sqoop 将自动用生成的条件替换这个占位符,指定每个单独的任务应该传输哪个数据片。
虽然您可以通过使用 --num-mappers 1 参数强制 Sqoop 仅运行一项作业来跳过 $CONDITIONS?等,这样的限制会产生严重的性能影响。
例如:-
如果您运行并行导入,地图任务将使用不同的值替换 $CONDITIONS 来执行您的查询。一个映射器可能会执行“select bla from foo WHERE (id >=0 AND id < 10000)”,下一个映射器可能会执行“select bla from foo WHERE (id >= 10000 AND id < 20000)”等等。