背景:最近需要处理一些数据,想通过python来分析线上埋点上报。 实现过程中,发现访问数据的组件没有支持python的,有一个通过jdbc访问的方式是熟悉的,那么问题变成了如何在python里访问java代码来获取到数据。
经过一番搜索,找到了jpype.
安装比较简单
pip install jpype1
简单的调用以下代码即可创建jvm并执行java代码
startJVM(getDefaultJVMPath(), f"-Djava.class.path={jar_path}") #1
helperClass = JClass("com.barran.jdbc.hive.JdbcHiveHelper") # 2
helper = helperClass() // 实例化
_result = helper.reqData(xxx) #3
- 通过startJVM创建jvm虚拟机,并加载需要完成任务的jar,此时已经能访问jvm了
- 通过jpype.JClass获取到java 类,并实例化
- 通过java对象访问成员方法,可java代码基本一致
注意
确保python与java的参数和返回值类型正确即可。
例子比较简单,大佬们可以根据文档使用更深入的功能。