请问如何实现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]> 于2021年2月4日周四 下午5:53写道: > 请问如何实现pyflink的py4j调用我自己写的java程序 ? |
老师,我想用java jvm认证kerberos程序,供给pyflink使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到?
------------------ 原始邮件 ------------------ 发件人: "user-zh" <[hidden email]>; 发送时间: 2021年2月5日(星期五) 上午10:35 收件人: "user-zh"<[hidden email]>; 主题: 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]> 于2021年2月4日周四 下午5:53写道: > 请问如何实现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使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到? > > > > > ------------------ 原始邮件 ------------------ > 发件人: "user-zh" <[hidden email]>; > 发送时间: 2021年2月5日(星期五) 上午10:35 > 收件人: "user-zh"<[hidden email]>; > > 主题: 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]> 于2021年2月4日周四 下午5:53写道: > > > 请问如何实现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程序 ? 首先你需要将你的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使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到? > > > > > ------------------ 原始邮件 ------------------ > 发件人: "user-zh" <[hidden email]>; > 发送时间: 2021年2月5日(星期五) 上午10:35 > 收件人: "user-zh"<[hidden email]>; > > 主题: 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]> 于2021年2月4日周四 下午5:53写道: > > > 请问如何实现pyflink的py4j调用我自己写的java程序 ? |
图片似乎无法加载,不过我猜应该是参数类型问题?这个函数需要参数类型为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使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到? > > > > > > > > > > ------------------ 原始邮件 ------------------ > > 发件人: "user-zh" <[hidden email]>; > > 发送时间: 2021年2月5日(星期五) 上午10:35 > > 收件人: "user-zh"<[hidden email]>; > > > > 主题: 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]> 于2021年2月4日周四 下午5:53写道: > > > > > 请问如何实现pyflink的py4j调用我自己写的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.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]>; 发送时间: 2021年2月5日(星期五) 晚上6:01 收件人: "user-zh"<[hidden email]>; 主题: Re: pyflink的py4j里是不是可以调用我自己写的java程序 ? 图片似乎无法加载,不过我猜应该是参数类型问题?这个函数需要参数类型为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程序 ? > > |
尝试调用:
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使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到? > > > > > > > > > > > > > > > ------------------ 原始邮件 ------------------ > > > 发件人: "user-zh" <[hidden email] <mailto:[hidden email]>>; > > > 发送时间: 2021年2月5日(星期五) 上午10:35 > > > 收件人: "user-zh"<[hidden email] <mailto:[hidden email]>>; > > > > > > 主题: 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]>> 于2021年2月4日周四 下午5:53写道: > > > > > > > 请问如何实现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使用,就是说如果是函数的话,就只是个调用的无输入函数,怎么样才能做到? > > > > > > > > > > > > > > > ------------------ 原始邮件 ------------------ > > > 发件人: "user-zh" <[hidden email] <mailto:[hidden email]>>; > > > 发送时间: 2021年2月5日(星期五) 上午10:35 > > > 收件人: "user-zh"<[hidden email] <mailto:[hidden email]>>; > > > > > > 主题: 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]>> 于2021年2月4日周四 下午5:53写道: > > > > > > > 请问如何实现pyflink的py4j调用我自己写的java程序 ? > > > > |
Free forum by Nabble | Edit this page |