最近我被问到这个问题我在描述一个涉及多个连接的用例,除了我在Spark中实现的一些处理之外,问题是,在使用Sqoop将数据导入HDFS时是否还没有完成连接?我想从架构的角度理解是否可以在Sqoop中实现连接,即使它是可能的。
可以在sqoop导入中进行连接。
从体系结构的角度来看,它取决于您的用例,sqoop主要是用于快速导入/导出的实用程序。所有的etl都可以通过火花/猪/蜂巢/黑斑羚来完成。
虽然它是可行的,但我建议不要这样做,因为它会增加你的工作时间效率加上它会加重你的计算连接/聚合的来源以及sqoop主要被设计为结构化源的摄取工具。
这取决于数据管道的基础结构,如果您将Spark用于其他目的,那么最好使用相同的Spark来导入数据。 Sqoop支持加入,如果你只需要导入数据就足够了。希望这能回答您的疑问。
您可以使用:
但是,使用JOIN的视图不能用于增量导入。
在当前版本的Sqoop中使用自由格式查询的功能仅限于简单查询,其中WHERE子句中没有不明确的投影和OR条件。使用复杂查询(例如具有子查询或连接的查询导致模糊投影)可能会导致意外结果。
Sqoop导入工具支持加入。它可以使用--query选项存档(不要将此选项与--table / --column一起使用)。