最近有人问我这个问题,我在这里描述一个用例,它涉及多个联接以及我在Spark中实现的一些处理,问题是,在将数据导入到使用HDFS的HDFS中,联接是否可能没有完成? Sqoop?我想从架构的角度理解,即使有可能,也建议在Sqoop中实现联接。
答案 0 :(得分:4)
可以在sqoop导入中加入联接。
从体系结构的角度来看,sqoop主要取决于您的用例,它是用于快速导入/导出的实用程序。所有的etl都可以通过spark / pig / hive / impala完成。
尽管这是可行的,但我不建议这样做,因为它会增加您工作的时间效率,而且会给您的源增加计算连接/聚合的负担,并且sqoop最初主要是用作结构化源的提取工具
答案 1 :(得分:0)
这取决于您数据管道的基础结构,如果您将Spark用于其他目的,那么最好也使用同一Spark导入数据。 Sqoop支持加入,如果您只需要导入数据而无需其他任何内容,就足够了。希望这能回答您的查询。
答案 2 :(得分:0)
您可以使用:
但是,带有JOIN的视图不能用于增量导入。
在当前版本的Sqoop中使用自由格式查询的功能 仅限于没有模棱两可的投影的简单查询 并且WHERE子句中没有OR条件。使用诸如此类的复杂查询 作为具有子查询或联接导致歧义的查询 预测会导致意外结果。
答案 3 :(得分:0)
Sqoop导入工具支持联接。可以使用--query选项将其存档(不要将此选项与--table / --column一起使用)。