想真正学习或者提升自己的ETL领域知识的朋友欢迎进群,一起学习,共同进步。若二维码失效,公众号后台加我微信入群,备注kettle。
kettle中不能直接调用python脚本,可以通过shell脚本和http进行调用pyton服务。
一、shell脚本调用python脚本
1、下面是一段简单的无参python脚本
import osdef main():# 在这里编写Python脚本的主要逻辑print("Hello, this is a Python script called by shell!")if __name__ == "__main__":main()
2、通过shell脚本调用。
shell脚本
cd D:\king\kettle-demo py test.py
3、将步骤【Shell】拉入画布,步骤内直接编写shell脚本或者调用shell文件进行调用python脚本,如下图所示:
4、采用直接插入shell脚本的方式调用python脚本,如下图所示:
5、选项卡脚本文本框内直接填写shell脚本,如下图所示:
6、下面是一段简单的带参python脚本
# 文件名:script_with_args.pyimport sysdef main():if len(sys.argv) < 2:print("Usage: python script_with_args.py <arg1>")returnarg1 = sys.argv[1]print(f"Argument passed from shell: {arg1}")if __name__ == "__main__":main()
7、采用py test1.py java命令将参数java传递给python脚本,如下图所示:
8、采用调用shell文件(rundemo.bat或者rundemo.sh)方式进而调用python脚本,如下图所示:
最下面的参数可以设置传递给python脚本参数,如设置V1参数。
9、采用调用shell文件(rundemo.bat或者rundemo.sh)方式进而调用python脚本,如下图所示:
也可以上一步骤的结果作为参数传递给python脚本。
10、转换中设置一个参数V1为java,然后将java字符串传递给python脚本,如下图所示:
二、http方式调用pyton服务
此处是将python脚本暴露http服务接口,然后在kettle中使用http步骤进行调用。这里不在详细介绍,可以参考之前的http调用文章。至于python脚本如何暴露http服务(使用Flask轻松解决),如下图所示: