可以使用Sqoop在IMPORT上执行联接吗?

时间:2019-02-25 08:48:17

标签: apache-spark hadoop import bigdata sqoop

最近有人问我这个问题,我在这里描述一个用例,它涉及多个联接以及我在Spark中实现的一些处理,问题是,在将数据导入到使用HDFS的HDFS中,联接是否可能没有完成? Sqoop?我想从架构的角度理解,即使有可能,也建议在Sqoop中实现联接。

4 个答案:

答案 0 :(得分:4)

可以在sqoop导入中加入联接。

从体系结构的角度来看,sqoop主要取决于您的用例,它是用于快速导入/导出的实用程序。所有的etl都可以通过spark / pig / hive / impala完成。

尽管这是可行的,但我不建议这样做,因为它会增加您工作的时间效率,而且会给您的源增加计算连接/聚合的负担,并且sqoop最初主要是用作结构化源的提取工具

答案 1 :(得分:0)

这取决于您数据管道的基础结构,如果您将Spark用于其他目的,那么最好也使用同一Spark导入数据。 Sqoop支持加入,如果您只需要导入数据而无需其他任何内容,就足够了。希望这能回答您的查询。

答案 2 :(得分:0)

您可以使用:

  • DBMS中的一个视图,可以选择使用sqoop eval在其中设置数据库中的参数来读取。
  • 用于定义了JOIN的sqoop的自由格式SQL

但是,带有JOIN的视图不能用于增量导入。

  

在当前版本的Sqoop中使用自由格式查询的功能   仅限于没有模棱两可的投影的简单查询   并且WHERE子句中没有OR条件。使用诸如此类的复杂查询   作为具有子查询或联接导致歧义的查询   预测会导致意外结果。

答案 3 :(得分:0)

Sqoop导入工具支持联接。可以使用--query选项将其存档(不要将此选项与--table / --column一起使用)。