我的 Pyflink 设置有什么问题导致 Python UDF 抛出 py4j 异常?

2023-12-27

我正在使用文档中的 flink python datastream 教程:https://ci.apache.org/projects/flink/flink-docs-master/docs/dev/python/datastream_tutorial/ https://ci.apache.org/projects/flink/flink-docs-master/docs/dev/python/datastream_tutorial/

环境

我的环境是Windows 10。java -version gives:

openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

我尝试了几种方法来为flink设置python环境。结果是相同的。

选项 1(使用 conda):

conda create -n streaming-experiments python=3.8.10
conda activate streaming-experiments
pip install apache-flink==1.13.1

方案2(使用系统python+诗歌):

  • 在系统级别安装了 python 3.8.10
  • pyproject.toml 依赖项:
pandas = ">=1.0"
httpx = "*"
pyarrow = "*"
apache-flink = "^1.13.1"
  • 安装依赖项:
"C:\Users\myuser\AppData\Local\Programs\Python\Python38\python.exe" -m pip install poetry
poetry install

问题

最小的例子:

from pyflink.common.serialization import Encoder
from pyflink.common.typeinfo import Types
from pyflink.datastream import StreamExecutionEnvironment
from pyflink.datastream.connectors import StreamingFileSink


def tutorial():
    env = StreamExecutionEnvironment.get_execution_environment()
    env.set_parallelism(1)
    ds = env.from_collection(
        collection=[(1, 'aaa'), (2, 'bbb')],
        type_info=Types.ROW([Types.INT(), Types.STRING()])
    ).map(lambda l: l, output_type=Types.ROW([Types.INT(), Types.STRING()]))
    ds.print()
    ds.add_sink(StreamingFileSink
                .for_row_format('./output', Encoder.simple_string_encoder())
                .build())
    env.execute("tutorial_job")


if __name__ == '__main__':
    tutorial()

如果我运行文档中的示例,它就会起作用。一旦我使用 python udf 添加“map”操作,我就会收到 py4j 错误。这就是我得到的:

C:\Users\myuser\AppData\Local\Continuum\miniconda3\envs\streaming-experiments\python.exe C:/Users/myuser/PycharmProjects/streaming-experiments/example.py
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.flink.api.java.ClosureCleaner (file:/C:/Users/myuser/AppData/Local/Continuum/miniconda3/envs/streaming-experiments/Lib/site-packages/pyflink/lib/flink-dist_2.11-1.13.1.jar) to field java.lang.String.value
WARNING: Please consider reporting this to the maintainers of org.apache.flink.api.java.ClosureCleaner
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Traceback (most recent call last):
  File "C:/Users/myuser/PycharmProjects/streaming-experiments/example.py", line 22, in <module>
    tutorial()
  File "C:/Users/myuser/PycharmProjects/streaming-experiments/example.py", line 18, in tutorial
    env.execute("tutorial_job")
  File "C:\Users\myuser\AppData\Local\Continuum\miniconda3\envs\streaming-experiments\lib\site-packages\pyflink\datastream\stream_execution_environment.py", line 645, in execute
    return JobExecutionResult(self._j_stream_execution_environment.execute(j_stream_graph))
  File "C:\Users\myuser\AppData\Local\Continuum\miniconda3\envs\streaming-experiments\lib\site-packages\py4j\java_gateway.py", line 1285, in __call__
    return_value = get_return_value(
  File "C:\Users\myuser\AppData\Local\Continuum\miniconda3\envs\streaming-experiments\lib\site-packages\pyflink\util\exceptions.py", line 146, in deco
    return f(*a, **kw)
  File "C:\Users\myuser\AppData\Local\Continuum\miniconda3\envs\streaming-experiments\lib\site-packages\py4j\protocol.py", line 326, in get_return_value
    raise Py4JJavaError(
py4j.protocol.Py4JJavaError: An error occurred while calling o1.execute.
: org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
    at org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java:144)
    at org.apache.flink.runtime.minicluster.MiniClusterJobClient.lambda$getJobExecutionResult$3(MiniClusterJobClient.java:137)
    at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
    at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
    at org.apache.flink.runtime.rpc.akka.AkkaInvocationHandler.lambda$invokeRpc$0(AkkaInvocationHandler.java:237)
    at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
    at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
    at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
    at org.apache.flink.runtime.concurrent.FutureUtils$1.onComplete(FutureUtils.java:1081)
    at akka.dispatch.OnComplete.internal(Future.scala:264)
    at akka.dispatch.OnComplete.internal(Future.scala:261)
    at akka.dispatch.japi$CallbackBridge.apply(Future.scala:191)
    at akka.dispatch.japi$CallbackBridge.apply(Future.scala:188)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
    at org.apache.flink.runtime.concurrent.Executors$DirectExecutionContext.execute(Executors.java:73)
    at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:44)
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:252)
    at akka.pattern.PromiseActorRef.$bang(AskSupport.scala:572)
    at akka.pattern.PipeToSupport$PipeableFuture$$anonfun$pipeTo$1.applyOrElse(PipeToSupport.scala:22)
    at akka.pattern.PipeToSupport$PipeableFuture$$anonfun$pipeTo$1.applyOrElse(PipeToSupport.scala:21)
    at scala.concurrent.Future$$anonfun$andThen$1.apply(Future.scala:436)
    at scala.concurrent.Future$$anonfun$andThen$1.apply(Future.scala:435)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
    at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
    at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
    at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:44)
    at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: org.apache.flink.runtime.JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy
    at org.apache.flink.runtime.executiongraph.failover.flip1.ExecutionFailureHandler.handleFailure(ExecutionFailureHandler.java:138)
    at org.apache.flink.runtime.executiongraph.failover.flip1.ExecutionFailureHandler.getFailureHandlingResult(ExecutionFailureHandler.java:82)
    at org.apache.flink.runtime.scheduler.DefaultScheduler.handleTaskFailure(DefaultScheduler.java:207)
    at org.apache.flink.runtime.scheduler.DefaultScheduler.maybeHandleTaskFailure(DefaultScheduler.java:197)
    at org.apache.flink.runtime.scheduler.DefaultScheduler.updateTaskExecutionStateInternal(DefaultScheduler.java:188)
    at org.apache.flink.runtime.scheduler.SchedulerBase.updateTaskExecutionState(SchedulerBase.java:677)
    at org.apache.flink.runtime.scheduler.SchedulerNG.updateTaskExecutionState(SchedulerNG.java:79)
    at org.apache.flink.runtime.jobmaster.JobMaster.updateTaskExecutionState(JobMaster.java:435)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcInvocation(AkkaRpcActor.java:305)
    at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcMessage(AkkaRpcActor.java:212)
    at org.apache.flink.runtime.rpc.akka.FencedAkkaRpcActor.handleRpcMessage(FencedAkkaRpcActor.java:77)
    at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleMessage(AkkaRpcActor.java:158)
    at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:26)
    at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:21)
    at scala.PartialFunction$class.applyOrElse(PartialFunction.scala:123)
    at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:21)
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:170)
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171)
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171)
    at akka.actor.Actor$class.aroundReceive(Actor.scala:517)
    at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:225)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:592)
    at akka.actor.ActorCell.invoke(ActorCell.scala:561)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:258)
    at akka.dispatch.Mailbox.run(Mailbox.scala:225)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:235)
    ... 4 more
Caused by: java.lang.RuntimeException: Failed to create stage bundle factory! INFO:root:Initializing python harness: C:\Users\myuser\AppData\Local\Continuum\miniconda3\envs\streaming-experiments\lib\site-packages\pyflink\fn_execution\beam\beam_boot.py --id=1-1 --provision_endpoint=localhost:56474

    at org.apache.flink.streaming.api.runners.python.beam.BeamPythonFunctionRunner.createStageBundleFactory(BeamPythonFunctionRunner.java:429)
    at org.apache.flink.streaming.api.runners.python.beam.BeamPythonFunctionRunner.open(BeamPythonFunctionRunner.java:273)
    at org.apache.flink.streaming.api.operators.python.AbstractPythonFunctionOperator.open(AbstractPythonFunctionOperator.java:121)
    at org.apache.flink.streaming.api.operators.python.OneInputPythonFunctionOperator.open(OneInputPythonFunctionOperator.java:108)
    at org.apache.flink.streaming.runtime.tasks.OperatorChain.initializeStateAndOpenOperators(OperatorChain.java:437)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.restoreGates(StreamTask.java:582)
    at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$SynchronizedStreamTaskActionExecutor.call(StreamTaskActionExecutor.java:100)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.executeRestore(StreamTask.java:562)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.runWithCleanUpOnFail(StreamTask.java:647)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.restore(StreamTask.java:537)
    at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:759)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:566)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.apache.beam.vendor.guava.v26_0_jre.com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Process died with exit code 0
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2050)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache.get(LocalCache.java:3952)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964)
    at org.apache.beam.runners.fnexecution.control.DefaultJobBundleFactory$SimpleStageBundleFactory.<init>(DefaultJobBundleFactory.java:451)
    at org.apache.beam.runners.fnexecution.control.DefaultJobBundleFactory$SimpleStageBundleFactory.<init>(DefaultJobBundleFactory.java:436)
    at org.apache.beam.runners.fnexecution.control.DefaultJobBundleFactory.forStage(DefaultJobBundleFactory.java:303)
    at org.apache.flink.streaming.api.runners.python.beam.BeamPythonFunctionRunner.createStageBundleFactory(BeamPythonFunctionRunner.java:427)
    ... 12 more
Caused by: java.lang.IllegalStateException: Process died with exit code 0
    at org.apache.beam.runners.fnexecution.environment.ProcessManager$RunningProcess.isAliveOrThrow(ProcessManager.java:75)
    at org.apache.beam.runners.fnexecution.environment.ProcessEnvironmentFactory.createEnvironment(ProcessEnvironmentFactory.java:112)
    at org.apache.beam.runners.fnexecution.control.DefaultJobBundleFactory$1.load(DefaultJobBundleFactory.java:252)
    at org.apache.beam.runners.fnexecution.control.DefaultJobBundleFactory$1.load(DefaultJobBundleFactory.java:231)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3528)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2277)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2154)
    at org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2044)
    ... 20 more


Process finished with exit code 1

我试图找出 py4j 本身是否有效。但确实如此。这会打印两个数字,所以它似乎有效:

from py4j.java_gateway import JavaGateway, launch_gateway
launch_gateway(25333, die_on_exit=True)
gateway = JavaGateway()
random = gateway.jvm.java.util.Random()
number1 = random.nextInt(10)
number2 = random.nextInt(10)
print(number1, number2)

任何关于检查或测试内容的提示都将受到高度赞赏。


好吧,经过几个小时的故障排除后,我发现问题不在于我的 python 或 java 设置,也不在于 pyflink。

问题是我公司的代理。我没有想到网络,但 py4j 在幕后需要网络。应该更多地关注堆栈跟踪中的这一行:

Caused by: java.lang.RuntimeException: Failed to create stage bundle factory! INFO:root:Initializing python harness: C:\Users\myuser\AppData\Local\pypoetry\Cache\virtualenvs\streamexp-yYteoysd-py3.8\lib\site-packages\pyflink\fn_execution\beam\beam_boot.py --id=1-1 --provision_endpoint=localhost:53816

解决方案很简单,设置一个环境变量:

set no_proxy=localhost

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 Pyflink 设置有什么问题导致 Python UDF 抛出 py4j 异常? 的相关文章

随机推荐

  • 如何使用 paypal Rest api 解决 400 错误请求错误?

    我目前正在使用 PayPal payment pro Rest API 测试信用卡付款 我不断收到以下错误 Exception in HttpConnection Execute Invalid HTTP response The remo
  • 阻止 DebuggerStepThroughAttribute 应用于我的非 xsd 生成的部分类?

    我使用 xsd exe 工具根据我的 xml 架构生成一个类 它使用 DebuggerStepThroughAttribute 创建了一个公共分部类 好吧 我为此类创建了另一个部分类文件来编写我的自定义代码 并希望能够单步执行我编写的这段代
  • 用于具有数据库访问的 Python Django 测试的 Visual Studio 测试资源管理器

    从 Visual Studio 测试资源管理器启动测试运行在运行测试之前不会调用数据库创建和 Django setup 我当前的解决方法是调用类似的东西 我将其保留在 config settings test 中 def setUpTest
  • Mapbox 描述框的地图样式

    我是新手 正在研究他的前端技能 我正在设计自己的网站来学习 我正在尝试使用 Mapbox API 实现地图 但无法获取我在地图中使用的描述框的样式 链接到我的网站 http rohanchhabra in 地图位于底部 现在我已经成功在地图
  • 使用 XSLT 显示时间表

    我正在尝试使用 XSLT 显示大学课程时间表 我的 DTS 如下所示 我想在日 小时表中显示所有课程 看起来像这样 请原谅糟糕的设计 问题是 我想做一个for each子句 但仅针对常规数字 而不针对 xml 的某些部分 XSLT
  • 时间从秒到日期的转换问题

    我有以下内容Long变量以秒为单位保存纪元值 我试图将其转换为Date val seconds 1341855763000 val date Date TimeUnit SECONDS toMillis seconds 输出比我预期的要差很
  • 为什么在同一目录中导入模块时出现 ModuleNotFound?

    问题 当我尝试使用以下命令在 linux bash 上激活 main py 时 python3 main py 不断出现如下所示的错误消息 我不明白为什么 File main py line 1 in
  • FluentValidation ModelState.IsValid 始终为 true

    好吧 我的问题是 fluidValidation 中的 modelvalidator 在我的项目中不起作用 并且无论验证状态如何 ModelState IsValid 始终为 true 我提前使用 asp net mvc 4 net 4 5
  • 更改 Devise 的登录 URL

    使用 before filter authenticate 用户时如何更改设备的登录路径 我在帖子控制器中有以下内容 eg class PostsController lt ApplicationController before filt
  • PowerShell 从日期获取工作日名称

    使用 powershell 我想从日期中获取星期几名称 星期五 一直在谷歌搜索 找不到这个 这样我就可以在日期是星期五时执行 IF 语句来执行某些操作 有人可以帮忙吗 Use Get Date生成 DateTime 对象 然后调用其 Day
  • 在 angular2 中,如何获取为 @Input 发送的对象上更改的属性的 onChanges

    我有一个指令 上面有一个 Input接受一个类 Directive selector my directive View directives CORE DIRECTIVES export class MyDirective Input i
  • HTML 中每个
    后缩进一行

    我尝试将 PDF 书变成 mobi 书 html 并且我还想重新创建布局 在那里 在每次中断之后 文本都是一行 这应该可以做到 但我做错了 因为它不起作用 我不想对段落执行此操作 因为默认情况下还包括一个空行 但这些中断并不总是意味着一个全
  • R 中的简化 dput()

    我错过了一种以透明的方式将数据添加到 SO 答案的方法 我的经验是structure对象来自dput 有时会让没有经验的用户感到不必要的困惑 然而 我没有耐心每次将其复制 粘贴到简单的数据框中 并希望将其自动化 类似的东西dput 但是是简
  • 如何在使用 XJC 生成 JAXB 代码期间重命名顶级类名?

    我正在尝试从几个 xsd 生成一些 bean 不幸的是它们都有相同的根元素 我已成功创建用于重命名子元素的 xjc 绑定文件 但找不到选择根节点来更改它的方法 我尝试了以下操作 但出现错误 错误 的 XPath 计算需要生成一个元素
  • C# 中数据网格的行数和列数

    考虑我有一个数据网格 我需要找到数据网格中的行数和列数 我怎样才能在 C 中做到这一点 The DataGrid Items属性返回一个DataGridItemCollection代表着DataGridItems在数据网格中 Each Da
  • AttributeError:部分初始化的模块“cv2”没有属性“gapi_wip_gst_GStreamerPipeline”(很可能是由于循环导入)

    这种情况突然发生 我能够导入 cv2 但现在导入时出现 AttributeError 部分初始化的模块 cv2 没有属性 gapi wip gst GStreamerPipeline 很可能是由于循环导入 错误 我尝试过的事情 1 卸载并安
  • NuGet-repositories.config

    NuGet新手问题 I saw repositories config被添加到 NuGet 包文件夹中 谁能指导我这个文件的用途是什么 谢谢你 该文件主要是 NuGet 实现细节 不应直接处理 它可能会消失或将来发生变化 但作为参考 它包含
  • 在 python 中更新字典

    我已经被这个问题困扰了很长一段时间 只是无法弄清楚 我只是想能够理解我缺少什么以及为什么需要它 我需要做的是创建一个函数 将每个给定的键 值对添加到字典中 参数 key value pairs 将是 key value 形式的元组列表 de
  • 为什么任务的 Result 属性对于非泛型任务 (C# 4.0+) 不可用?

    我正在尝试掌握 NET 4 0 任务并行库概念 在以下 C 4 0 代码片段中 Task t Task Factory StartNew gt Console WriteLine I am the task return res1 如果不能
  • 我的 Pyflink 设置有什么问题导致 Python UDF 抛出 py4j 异常?

    我正在使用文档中的 flink python datastream 教程 https ci apache org projects flink flink docs master docs dev python datastream tut