我有一个场景,其中我有一个aws emr的设置与几个应用程序,如spark,hadoop,hive,hcatalog,齐柏林飞艇,sqoop等,我有另一个服务器,只运行气流。
我正在处理一个需求,我想使用sqoop将mysql表(同样在另一个rds示例上)移动到hive,并且这个触发器必须由airflow提交。
如果气流在远程服务器中,是否可以使用气流中可用的sqoopoperator来实现这一点?我相信没有,那么有没有其他方法可以达到这个目的呢?
提前感谢。
我有一个场景,其中我有一个aws emr的设置与几个应用程序,如spark,hadoop,hive,hcatalog,齐柏林飞艇,sqoop等,我有另一个服务器,只运行气流。
我正在处理一个需求,我想使用sqoop将mysql表(同样在另一个rds示例上)移动到hive,并且这个触发器必须由airflow提交。
如果气流在远程服务器中,是否可以使用气流中可用的sqoopoperator来实现这一点?我相信没有,那么有没有其他方法可以达到这个目的呢?
提前感谢。
2条答案
按热度按时间tp5buhyn1#
尝试使用script-runner.jar添加step-by。还有更多。
你就可以这样做。
像这样。
piwo6bdm2#
是的,这是可能的。我承认关于如何使用操作符的文档是缺乏的,但是如果你理解气流中的钩子和操作符的概念,你可以通过阅读你想要使用的操作符的代码来弄清楚。在这种情况下,您需要通读sqoophook和sqoopoperator代码库。我知道如何处理气流的大部分工作都是通过阅读代码来完成的,虽然我还没有使用这个操作符,但我可以在这里尽我所能帮助您。
假设您要执行以下sqoop命令:
您有一个运行在远程主机上的sqoop服务器,您可以通过位于http://scoop.example.com:12000/sqoop/。
首先,您需要在airflow管理ui中创建连接,调用该连接
sqoop
. 对于连接,请填写host
作为scoop.example.com
,schema
作为sqoop
,和port
作为12000
. 如果您有密码,则需要将其放入服务器上的一个文件中,然后extras
填写一个json字符串{'password_file':'/path/to/password.txt'}
(请参阅有关此密码文件的内联代码)。在ui中设置连接后,现在可以在dag文件中使用sqoop操作符创建任务。这可能是这样的:
您可以在这里的代码中看到为导入传递的参数的完整列表。
您可以在这里看到sqoop操作符(实际上是操作符用来连接到sqoop的sqoophook)如何将这些参数转换为命令行命令。
实际上,这个sqoop操作符只是通过将传递的kwarg转换为sqoop客户机cli命令来工作。如果您查看sqoophook,您可以看到这是如何完成的,并且可能会发现如何使它适用于您的案例。祝你好运!
要进行故障排除,我建议您将sshing插入正在运行的服务器,并确认您可以从命令行运行spoop客户端并连接到远程spoop服务器。