You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Karel Kolman (JIRA)" <ji...@apache.org> on 2018/11/19 09:32:00 UTC

[jira] [Created] (FLINK-10925) NPE in PythonPlanStreamer

Karel Kolman created FLINK-10925:
------------------------------------

             Summary: NPE in PythonPlanStreamer
                 Key: FLINK-10925
                 URL: https://issues.apache.org/jira/browse/FLINK-10925
             Project: Flink
          Issue Type: Bug
    Affects Versions: 1.6.2
            Reporter: Karel Kolman


Encountered the following issue while testing Python Batch API:
{noformat}
root@a0810aa4b51b:/opt/flink# ./bin/pyflink.sh examples/python/batch/WordCount.py  -
Starting execution of program
Failed to run plan: null

The program didn't contain a Flink job. Perhaps you forgot to call execute() on the execution environment.
{noformat}

with logs containing the following stacktrace:
{noformat}
2018-11-19 09:11:51,036 ERROR org.apache.flink.python.api.PythonPlanBinder                  - Failed to run plan.
java.lang.NullPointerException
        at org.apache.flink.python.api.streaming.plan.PythonPlanStreamer.close(PythonPlanStreamer.java:129)
        at org.apache.flink.python.api.PythonPlanBinder.runPlan(PythonPlanBinder.java:201)
        at org.apache.flink.python.api.PythonPlanBinder.main(PythonPlanBinder.java:98)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:529)
        at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:421)
        at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:426){noformat}

My root cause was not having Python installed on the docker image being used.

Patching Flink with 
{noformat}
diff --git a/flink-libraries/flink-python/src/main/java/org/apache/flink/python/api/streaming/plan/PythonPlanStreamer.java b/flink-libraries/flink-python/src/main/java/org/apache/flink/python/api/streaming/plan/PythonPlanStreamer.java
index d25f3d51ff..3e6a068d8a 100644
--- a/flink-libraries/flink-python/src/main/java/org/apache/flink/python/api/streaming/plan/PythonPlanStreamer.java
+++ b/flink-libraries/flink-python/src/main/java/org/apache/flink/python/api/streaming/plan/PythonPlanStreamer.java
@@ -126,7 +126,9 @@ public class PythonPlanStreamer {
                        process.destroy();
                } finally {
                        try {
-                               server.close();
+                               if (server != null) {
+                                       server.close();
+                               }
                        } catch (IOException e) {
                                LOG.error("Failed to close socket.", e);
                        }
{noformat}

an attempt to run Python Batch API example will fail with
{noformat}
root@33837d1efa28:/opt/flink# ./bin/pyflink.sh examples/python/batch/WordCount.py -
Starting execution of program
Failed to run plan: python does not point to a valid python binary.

The program didn't contain a Flink job. Perhaps you forgot to call execute() on the execution environment
{noformat}

which correctly identifes the problem you are facing - missing python.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)