Hi Nikola Correct on the assumption that I'm working on ARM, MBP M1.
So ye i can add the -headless to my image build. The pip install it's in a total different phase though, don't install the packages ... currently as part of the base image, but might need to move it. let me have a look. will advise when done. G On Wed, May 14, 2025 at 11:18 AM Nikola Milutinovic <n.milutino...@levi9.com> wrote: > Hi George. > > > > We saw the same problem, running Apache Flink 1.19 and 1.20 images. The > cause is that Flink image provides a JRE and you need JDK to build/install > PyFlink. And, oddly enough, I think it was only on ARM64 images. Amd64 was > OK, I think. So, Mac M1, M2, M3… > > > > Our Docker file for building our custom image has some extra steps, to > install JDK, pip-install and then cleanup. > > > > RUN apt-get update -y \ > > && apt-get upgrade -y \ > > && apt-get install --no-install-recommends -y \ > > … > > openjdk-17-jdk-headless \ > > ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-arm64 > > > > After PIP install our requirement.txt, we do cleanup. > > > > # Cleanup JDK > > RUN apt-get remove -y openjdk-17-jdk-headless > > ENV JAVA_HOME=/opt/java/openjdk > > > > Hope it helps. > > > > Nix. > > > > *From: *George <george...@gmail.com> > *Date: *Wednesday, May 14, 2025 at 10:23 AM > *To: *user@flink.apache.org <user@flink.apache.org> > *Subject: *Python based User defined function on Flink 1.19.1 > > Hi all > > > > My Flink Jobmanager and Taskmanager is based on the community 1.19.1 on > the Java 17 image. > > > > I've extended this by installing Python 3.11 and python3.11-venv. > > > > created my venv environment, activated it, > > when trying to pip install apache-flink. I first got an error saying > /opt/java/openjdk/include does not exist... so created it. > > Next attempt ended in the below error. > > > > Please advise. > > > > G > > > > ``` > > venv) flink@jobmanager:/sql/prompush$ pip install apache-flink > Collecting apache-flink > Downloading apache-flink-2.0.0.tar.gz (1.5 MB) > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.5/1.5 MB 1.9 MB/s eta > 0:00:00 > Installing build dependencies ... done > Getting requirements to build wheel ... done > Preparing metadata (pyproject.toml) ... done > Collecting python-dateutil<3,>=2.8.0 > Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB) > Collecting requests>=2.26.0 > Using cached requests-2.32.3-py3-none-any.whl (64 kB) > Collecting pyarrow>=5.0.0 > Downloading pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl (40.7 > MB) > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.7/40.7 MB 415.8 kB/s eta > 0:00:00 > Collecting pytz>=2018.3 > Using cached pytz-2025.2-py2.py3-none-any.whl (509 kB) > Collecting fastavro!=1.8.0,>=1.1.0 > Using cached > fastavro-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl > (3.3 MB) > Collecting pemja==0.4.1 > Downloading pemja-0.4.1.tar.gz (50 kB) > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.7/50.7 KB 600.0 kB/s eta > 0:00:00 > Installing build dependencies ... done > Getting requirements to build wheel ... error > error: subprocess-exited-with-error > > × Getting requirements to build wheel did not run successfully. > │ exit code: 255 > ╰─> [1 lines of output] > jni.h should be in '/opt/java/openjdk/include/jni.h' but doesn't > exist. Please check you've installed the JDK properly. > [end of output] > > note: This error originates from a subprocess, and is likely not a > problem with pip. > error: subprocess-exited-with-error > > × Getting requirements to build wheel did not run successfully. > │ exit code: 255 > ╰─> See above for output. > > note: This error originates from a subprocess, and is likely not a problem > with pip. > > ``` > > > > -- > > You have the obligation to inform one honestly of the risk, and as a person > you are committed to educate yourself to the total risk in any activity! > > Once informed & totally aware of the risk, > every fool has the right to kill or injure themselves as they see fit! > -- You have the obligation to inform one honestly of the risk, and as a person you are committed to educate yourself to the total risk in any activity! Once informed & totally aware of the risk, every fool has the right to kill or injure themselves as they see fit!