pyflink的py4j里是不是可以调用我自己写的java程序 ?

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

pyflink的py4j里是不是可以调用我自己写的java程序 ?

瞿叶奇
请问如何实现pyflink的py4j调用我自己写的java程序 ?
Reply | Threaded
Open this post in threaded view
|

Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?

Xingbo Huang
Hi,

你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions

Best,
Xingbo


瞿叶奇 <[hidden email]> 于2021年2月4日周四 下午5:53写道:

> 请问如何实现pyflink的py4j调用我自己写的java程序 ?
Reply | Threaded
Open this post in threaded view
|

回复: pyflink的py4j里是不是可以调用我自己写的java程序 ?

瞿叶奇
老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?




------------------&nbsp;原始邮件&nbsp;------------------
发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email]&gt;;
发送时间:&nbsp;2021年2月5日(星期五) 上午10:35
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?



Hi,

你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions

Best,
Xingbo


瞿叶奇 <[hidden email]&gt; 于2021年2月4日周四 下午5:53写道:

&gt; 请问如何实现pyflink的py4j调用我自己写的java程序 ?
Reply | Threaded
Open this post in threaded view
|

Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?

Wei Zhong
Hi,

首先你需要将你的java程序打成jar包,之后热加载你的jar包, 目前pyflink里有一个util方法可以直接调用:
from pyflink.util.utils import add_jars_to_context_class_loader
add_jars_to_context_class_loader("file:///xxx <file:///xxx>") # 注意需要是url格式的路径

然后就能通过java gateway进行调用了:
from pyflink.java_gateway import get_gateway
get_gateway().jvm.your.class.name.main()

注意这个util方法是在较新的版本里才有,你可能需要升级一下pyflink版本

> 在 2021年2月5日,10:48,瞿叶奇 <[hidden email]> 写道:
>
> 老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email]&gt;;
> 发送时间:&nbsp;2021年2月5日(星期五) 上午10:35
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
>
>
>
> Hi,
>
> 你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]
>
> [1]
> https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions
>
> Best,
> Xingbo
>
>
> 瞿叶奇 <[hidden email]&gt; 于2021年2月4日周四 下午5:53写道:
>
> &gt; 请问如何实现pyflink的py4j调用我自己写的java程序 ?

Reply | Threaded
Open this post in threaded view
|

回复: pyflink的py4j里是不是可以调用我自己写的java程序 ?

瞿叶奇
老师,您好,
我升级到了flink1.12.0了,用这个函数加载类报错了,是我url写的有问题吗?pyfink有没有连接hdfs认证kerberos的方法呢?




------------------ 原始邮件 ------------------
发件人: "user-zh" <[hidden email]>;
发送时间: 2021年2月5日(星期五) 下午3:53
收件人: "user-zh"<[hidden email]>;
主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?

Hi,

首先你需要将你的java程序打成jar包,之后热加载你的jar包, 目前pyflink里有一个util方法可以直接调用:
from pyflink.util.utils import add_jars_to_context_class_loader
add_jars_to_context_class_loader("file:///xxx <file:///xxx>") # 注意需要是url格式的路径

然后就能通过java gateway进行调用了:
from pyflink.java_gateway import get_gateway
get_gateway().jvm.your.class.name.main()

注意这个util方法是在较新的版本里才有,你可能需要升级一下pyflink版本

> 在 2021年2月5日,10:48,瞿叶奇 <[hidden email]> 写道:
>
> 老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email]&gt;;
> 发送时间:&nbsp;2021年2月5日(星期五) 上午10:35
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
>
>
>
> Hi,
>
> 你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]
>
> [1]
> https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions
>
> Best,
> Xingbo
>
>
> 瞿叶奇 <[hidden email]&gt; 于2021年2月4日周四 下午5:53写道:
>
> &gt; 请问如何实现pyflink的py4j调用我自己写的java程序 ?


Reply | Threaded
Open this post in threaded view
|

Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?

Wei Zhong
图片似乎无法加载,不过我猜应该是参数类型问题?这个函数需要参数类型为List:
add_jars_to_context_class_loader(["file:///xxx <file:///xxx>"])

> 在 2021年2月5日,17:48,瞿叶奇 <[hidden email]> 写道:
>
> 老师,您好,
> 我升级到了flink1.12.0了,用这个函数加载类报错了,是我url写的有问题吗?pyfink有没有连接hdfs认证kerberos的方法呢?
>
>
>
>
> ------------------ 原始邮件 ------------------
> 发件人: "user-zh" <[hidden email]>;
> 发送时间: 2021年2月5日(星期五) 下午3:53
> 收件人: "user-zh"<[hidden email]>;
> 主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
>
> Hi,
>
> 首先你需要将你的java程序打成jar包,之后热加载你的jar包, 目前pyflink里有一个util方法可以直接调用:
> from pyflink.util.utils import add_jars_to_context_class_loader
> add_jars_to_context_class_loader("file:///xxx <file:///xxx>") # 注意需要是url格式的路径
>
> 然后就能通过java gateway进行调用了:
> from pyflink.java_gateway import get_gateway
> get_gateway().jvm.your.class.name.main()
>
> 注意这个util方法是在较新的版本里才有,你可能需要升级一下pyflink版本
>
> > 在 2021年2月5日,10:48,瞿叶奇 <[hidden email]> 写道:
> >
> > 老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?
> >
> >
> >
> >
> > ------------------&nbsp;原始邮件&nbsp;------------------
> > 发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email]&gt;;
> > 发送时间:&nbsp;2021年2月5日(星期五) 上午10:35
> > 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
> >
> > 主题:&nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
> >
> >
> >
> > Hi,
> >
> > 你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]
> >
> > [1]
> > https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions
> >
> > Best,
> > Xingbo
> >
> >
> > 瞿叶奇 <[hidden email]&gt; 于2021年2月4日周四 下午5:53写道:
> >
> > &gt; 请问如何实现pyflink的py4j调用我自己写的java程序 ?
>
>

Reply | Threaded
Open this post in threaded view
|

回复: pyflink的py4j里是不是可以调用我自己写的java程序 ?

瞿叶奇
老师,您好,列表参数就不在报错,但是还是没有加载进去。
&gt;&gt;&gt; from pyflink.util.utils import add_jars_to_context_class_loader
&gt;&gt;&gt; add_jars_to_context_class_loader(['file:///root/Test2.jar'])&nbsp;
&gt;&gt;&gt; from pyflink.java_gateway import get_gateway
&gt;&gt;&gt; get_gateway().jvm.Test2.main()
Traceback (most recent call last):
&nbsp; File "<stdin&gt;", line 1, in <module&gt;
&nbsp; File "/root/qyq_f/flink-1.12.0/opt/python/pyflink.zip/pyflink/util/exceptions.py", line 191, in wrapped_call
TypeError: Could not found the Java class 'Test2.main'. The Java dependencies could be specified via command line argument '--jarfile' or the config option 'pipeline.jars'

java code:
package Test2;
public class Test2 {
    public int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
            int a = 1;
            int b = 2;
            Test2 t2=new Test2();
            int c=t2.add(a,b);
            System.out.print(c);
        }
}




------------------&nbsp;原始邮件&nbsp;------------------
发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email]&gt;;
发送时间:&nbsp;2021年2月5日(星期五) 晚上6:01
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?



图片似乎无法加载,不过我猜应该是参数类型问题?这个函数需要参数类型为List:
add_jars_to_context_class_loader(["file:///xxx <file:///xxx&gt;"])

&gt; 在 2021年2月5日,17:48,瞿叶奇 <[hidden email]&gt; 写道:
&gt;
&gt; 老师,您好,
&gt; 我升级到了flink1.12.0了,用这个函数加载类报错了,是我url写的有问题吗?pyfink有没有连接hdfs认证kerberos的方法呢?
&gt;
&gt;
&gt;
&gt;
&gt; ------------------ 原始邮件 ------------------
&gt; 发件人: "user-zh" <[hidden email]&gt;;
&gt; 发送时间: 2021年2月5日(星期五) 下午3:53
&gt; 收件人: "user-zh"<[hidden email]&gt;;
&gt; 主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
&gt;
&gt; Hi,
&gt;
&gt; 首先你需要将你的java程序打成jar包,之后热加载你的jar包, 目前pyflink里有一个util方法可以直接调用:
&gt; from pyflink.util.utils import add_jars_to_context_class_loader
&gt; add_jars_to_context_class_loader("file:///xxx <file:///xxx&gt;") # 注意需要是url格式的路径
&gt;
&gt; 然后就能通过java gateway进行调用了:
&gt; from pyflink.java_gateway import get_gateway
&gt; get_gateway().jvm.your.class.name.main()
&gt;
&gt; 注意这个util方法是在较新的版本里才有,你可能需要升级一下pyflink版本
&gt;
&gt; &gt; 在 2021年2月5日,10:48,瞿叶奇 <[hidden email]&gt; 写道:
&gt; &gt;
&gt; &gt; 老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; &gt; 发件人:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "user-zh"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <[hidden email]&amp;gt;;
&gt; &gt; 发送时间:&amp;nbsp;2021年2月5日(星期五) 上午10:35
&gt; &gt; 收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
&gt; &gt;
&gt; &gt; 主题:&amp;nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; Hi,
&gt; &gt;
&gt; &gt; 你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]
&gt; &gt;
&gt; &gt; [1]
&gt; &gt; https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions
&gt; &gt;
&gt; &gt; Best,
&gt; &gt; Xingbo
&gt; &gt;
&gt; &gt;
&gt; &gt; 瞿叶奇 <[hidden email]&amp;gt; 于2021年2月4日周四 下午5:53写道:
&gt; &gt;
&gt; &gt; &amp;gt; 请问如何实现pyflink的py4j调用我自己写的java程序 ?
&gt;
&gt;
Reply | Threaded
Open this post in threaded view
|

Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?

Wei Zhong
尝试调用:
get_gateway().jvm.Test2.Test2.main(None)

> 在 2021年2月5日,18:27,瞿叶奇 <[hidden email]> 写道:
>
> 老师,您好,列表参数就不在报错,但是还是没有加载进去。
> >>> from pyflink.util.utils import add_jars_to_context_class_loader
> >>> add_jars_to_context_class_loader(['file:///root/Test2.jar <file:///root/Test2.jar>'])
> >>> from pyflink.java_gateway import get_gateway
> >>> get_gateway().jvm.Test2.main()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/root/qyq_f/flink-1.12.0/opt/python/pyflink.zip/pyflink/util/exceptions.py", line 191, in wrapped_call
> TypeError: Could not found the Java class 'Test2.main'. The Java dependencies could be specified via command line argument '--jarfile' or the config option 'pipeline.jars'
> java code:
> package Test2;
> public class Test2 {
>     public int add(int a, int b) {
>         return a + b;
>     }
>
>     public static void main(String[] args) {
>             int a = 1;
>             int b = 2;
>             Test2 t2=new Test2();
>             int c=t2.add(a,b);
>             System.out.print(c);
>         }
> }
>
>
> ------------------ 原始邮件 ------------------
> 发件人:  "user-zh" <[hidden email] <mailto:[hidden email]>>;
> 发送时间: 2021年2月5日(星期五) 晚上6:01
> 收件人: "user-zh"<[hidden email] <mailto:[hidden email]>>;
> 主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
>
> 图片似乎无法加载,不过我猜应该是参数类型问题?这个函数需要参数类型为List:
> add_jars_to_context_class_loader(["file:///xxx <file:///xxx> <file:///xxx <file:///xxx>>"])
>
> > 在 2021年2月5日,17:48,瞿叶奇 <[hidden email]> 写道:
> >
> > 老师,您好,
> > 我升级到了flink1.12.0了,用这个函数加载类报错了,是我url写的有问题吗?pyfink有没有连接hdfs认证kerberos的方法呢?
> >
> >
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人: "user-zh" <[hidden email]>;
> > 发送时间: 2021年2月5日(星期五) 下午3:53
> > 收件人: "user-zh"<[hidden email]>;
> > 主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
> >
> > Hi,
> >
> > 首先你需要将你的java程序打成jar包,之后热加载你的jar包, 目前pyflink里有一个util方法可以直接调用:
> > from pyflink.util.utils import add_jars_to_context_class_loader
> > add_jars_to_context_class_loader("file:///xxx <file:///xxx>") # 注意需要是url格式的路径
> >
> > 然后就能通过java gateway进行调用了:
> > from pyflink.java_gateway import get_gateway
> > get_gateway().jvm.your.class.name.main()
> >
> > 注意这个util方法是在较新的版本里才有,你可能需要升级一下pyflink版本
> >
> > > 在 2021年2月5日,10:48,瞿叶奇 <[hidden email]> 写道:
> > >
> > > 老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?
> > >
> > >
> > >
> > >
> > > ------------------&nbsp;原始邮件&nbsp;------------------
> > > 发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email] <mailto:[hidden email]>&gt;;
> > > 发送时间:&nbsp;2021年2月5日(星期五) 上午10:35
> > > 收件人:&nbsp;"user-zh"<[hidden email] <mailto:[hidden email]>&gt;;
> > >
> > > 主题:&nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
> > >
> > >
> > >
> > > Hi,
> > >
> > > 你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]
> > >
> > > [1]
> > > https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions <https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions>
> > >
> > > Best,
> > > Xingbo
> > >
> > >
> > > 瞿叶奇 <[hidden email] <mailto:[hidden email]>&gt; 于2021年2月4日周四 下午5:53写道:
> > >
> > > &gt; 请问如何实现pyflink的py4j调用我自己写的java程序 ?
> >
> >

Reply | Threaded
Open this post in threaded view
|

回复: pyflink的py4j里是不是可以调用我自己写的java程序 ?

瞿叶奇
老师,您好,仍然不能加载java程序,报错如下:


>>> from pyflink.util.utils import add_jars_to_context_class_loader
>>> add_jars_to_context_class_loader(['file:///root/Test2.jar'])
>>> from pyflink.java_gateway import get_gateway
>>> get_gateway().jvm.Test2.Test2.main(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/qyq_f/flink-1.12.0/opt/python/pyflink.zip/pyflink/util/exceptions.py", line 191, in wrapped_call
TypeError: Could not found the Java class 'Test2.Test2.main'. The Java dependencies could be specified via command line argument '--jarfile' or the config option 'pipeline.jars'
>>> get_gateway().jvm.Test2.main(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/qyq_f/flink-1.12.0/opt/python/pyflink.zip/pyflink/util/exceptions.py", line 191, in wrapped_call
TypeError: Could not found the Java class 'Test2.main'. The Java dependencies could be specified via command line argument '--jarfile' or the config option 'pipeline.jars'
>>> get_gateway().jvm.Test2.main()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/qyq_f/flink-1.12.0/opt/python/pyflink.zip/pyflink/util/exceptions.py", line 191, in wrapped_call
TypeError: Could not found the Java class 'Test2.main'. The Java dependencies could be specified via command line argument '--jarfile' or the config option 'pipeline.jars'
但是存在main函数:

>>> get_gateway().jvm.Test2.main
<py4j.java_gateway.JavaPackage object at 0x7ff901d7efd0>


------------------ 原始邮件 ------------------
发件人: "user-zh" <[hidden email]>;
发送时间: 2021年2月5日(星期五) 晚上7:06
收件人: "瞿叶奇"<[hidden email]>;
抄送: "user-zh"<[hidden email]>;
主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?

尝试调用:
get_gateway().jvm.Test2.Test2.main(None)

> 在 2021年2月5日,18:27,瞿叶奇 <[hidden email]> 写道:
>
> 老师,您好,列表参数就不在报错,但是还是没有加载进去。
> >>> from pyflink.util.utils import add_jars_to_context_class_loader
> >>> add_jars_to_context_class_loader(['file:///root/Test2.jar <file:///root/Test2.jar>'])
> >>> from pyflink.java_gateway import get_gateway
> >>> get_gateway().jvm.Test2.main()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/root/qyq_f/flink-1.12.0/opt/python/pyflink.zip/pyflink/util/exceptions.py", line 191, in wrapped_call
> TypeError: Could not found the Java class 'Test2.main'. The Java dependencies could be specified via command line argument '--jarfile' or the config option 'pipeline.jars'
> java code:
> package Test2;
> public class Test2 {
>     public int add(int a, int b) {
>         return a + b;
>     }
>
>     public static void main(String[] args) {
>             int a = 1;
>             int b = 2;
>             Test2 t2=new Test2();
>             int c=t2.add(a,b);
>             System.out.print(c);
>         }
> }
>
>
> ------------------ 原始邮件 ------------------
> 发件人:  "user-zh" <[hidden email] <mailto:[hidden email]>>;
> 发送时间: 2021年2月5日(星期五) 晚上6:01
> 收件人: "user-zh"<[hidden email] <mailto:[hidden email]>>;
> 主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
>
> 图片似乎无法加载,不过我猜应该是参数类型问题?这个函数需要参数类型为List:
> add_jars_to_context_class_loader(["file:///xxx <file:///xxx> <file:///xxx <file:///xxx>>"])
>
> > 在 2021年2月5日,17:48,瞿叶奇 <[hidden email]> 写道:
> >
> > 老师,您好,
> > 我升级到了flink1.12.0了,用这个函数加载类报错了,是我url写的有问题吗?pyfink有没有连接hdfs认证kerberos的方法呢?
> >
> >
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人: "user-zh" <[hidden email]>;
> > 发送时间: 2021年2月5日(星期五) 下午3:53
> > 收件人: "user-zh"<[hidden email]>;
> > 主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
> >
> > Hi,
> >
> > 首先你需要将你的java程序打成jar包,之后热加载你的jar包, 目前pyflink里有一个util方法可以直接调用:
> > from pyflink.util.utils import add_jars_to_context_class_loader
> > add_jars_to_context_class_loader("file:///xxx <file:///xxx>") # 注意需要是url格式的路径
> >
> > 然后就能通过java gateway进行调用了:
> > from pyflink.java_gateway import get_gateway
> > get_gateway().jvm.your.class.name.main()
> >
> > 注意这个util方法是在较新的版本里才有,你可能需要升级一下pyflink版本
> >
> > > 在 2021年2月5日,10:48,瞿叶奇 <[hidden email]> 写道:
> > >
> > > 老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?
> > >
> > >
> > >
> > >
> > > ------------------&nbsp;原始邮件&nbsp;------------------
> > > 发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email] <mailto:[hidden email]>&gt;;
> > > 发送时间:&nbsp;2021年2月5日(星期五) 上午10:35
> > > 收件人:&nbsp;"user-zh"<[hidden email] <mailto:[hidden email]>&gt;;
> > >
> > > 主题:&nbsp;Re: pyflink的py4j里是不是可以调用我自己写的java程序 ?
> > >
> > >
> > >
> > > Hi,
> > >
> > > 你是想使用java写的udfs吗,你可以调用register_java_function或者create_java_temporary_function来注册你用java写的udfs,具体可以参考文档[1]
> > >
> > > [1]
> > > https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions <https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/python/table-api-users-guide/udfs/python_udfs.html#scalar-functions>
> > >
> > > Best,
> > > Xingbo
> > >
> > >
> > > 瞿叶奇 <[hidden email] <mailto:[hidden email]>&gt; 于2021年2月4日周四 下午5:53写道:
> > >
> > > &gt; 请问如何实现pyflink的py4j调用我自己写的java程序 ?
> >
> >