Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:Python İşleri Geliştirme

Son Güncelleme:Oct 04, 2026

Bu konuda Flink Python API işleri için arka plan bilgileri, sınırlamalar, geliştirme yöntemleri, hata ayıklama yöntemleri ve konektör kullanımı açıklanmaktadır.

Arka Plan Bilgileri

Flink Python işlerini yerel ortamda geliştirmeniz gerekir. Geliştirme tamamlandıktan sonra işleri Flink geliştirme konsolunda dağıtıp başlatarak iş sonuçlarını görüntüleyebilirsiniz. Genel yordam hakkında daha fazla bilgi için bkz. Flink Python işleri.

Geliştirme Ortamı Gereksinimleri

  • VVR 8.0.11 öncesi Realtime Compute for Apache Flink altyapı sürümlerinde Python 3.7.9 önceden yüklü olarak gelir. VVR 8.0.11 ve sonraki sürümlerde Python 3.9.21 önceden yüklü olarak gelir. VVR 11.7 ve sonraki sürümlerde Python 3.9.21, 3,10.19 ve 3,11.14 önceden yüklü olarak gelir.

    Not

    Yerel geliştirme ortamınızdaki Python sürümünün, hedef VVR altyapısıyla birlikte önceden yüklenen Python sürümüyle eşleşmesini öneririz.

    Not

    VVR 11.7 ve sonraki sürümler varsayılan olarak Python 3.9 kullanır. Önceden yüklenen Python 3,10 veya 3,11'i kullanmak istiyorsanız işi aşağıdaki gibi yapılandırın:

    1. O&M > Deployments sayfasında hedef işin adına tıklayın.

    2. Configuration sekmesinde, Parameters bölümünün sağ tarafındaki Edit seçeneğine tıklayın ve Other Configuration alanına aşağıdaki yapılandırmayı ekleyin (örnek olarak Python 3,11 kullanılmıştır):

      python.executable: python3.11
      python.client.executable: python3.11
  • PyFlink yüklüdür ve sürümü hedef VVR altyapı sürümüyle eşleşir. Örneğin, dağıtım sayfasında seçtiğiniz altyapı vvr-11.7.0-jdk11-flink-1.20 ise şunu yüklemeniz gerekir:

    pip install ververica-flink==11.7.0
    Not

    VVR 11.5 ve önceki sürümler özel bir PyFlink paketi sağlamaz. Açık kaynaklı PyFlink'in karşılık gelen sürümünü yüklemeniz gerekir. Örneğin, dağıtım sayfasında seçtiğiniz altyapı vvr-8.0.9-flink-1.17 ise apache-flink==1.17.* yüklemeniz gerekir.

    pip install apache-flink==1.17.2
  • Bir IDE yüklüdür. PyCharm veya VS Code önerilir.

  • Python işlerini yerel ortamda geliştirip ardından Realtime Compute for Apache Flink konsolunda dağıtmanız ve çalıştırmanız gerekir.

Sınırlamalar

Dağıtım ve ağ ortamlarının Flink üzerindeki etkisi nedeniyle Python işlerini geliştirirken aşağıdaki sınırlamalara dikkat edin:

  • Yalnızca açık kaynaklı Flink V1.13 ve sonraki sürümler desteklenir.

  • Flink çalışma alanı, Pandas, NumPy ve PyArrow gibi yaygın kullanılan Python kitaplıklarını içeren önceden yüklenmiş bir Python ortamıyla birlikte gelir. Ayrıntılar için bu konunun sonundaki Önceden yüklenen paket listesi bölümüne bakın.

  • Flink çalışma zamanı ortamı yalnızca JDK 8 ve JDK 11'i destekler. Python işiniz üçüncü taraf JAR paketlerine bağımlıysa JAR paketlerinin uyumlu olduğundan emin olun.

  • VVR 4.x yalnızca açık kaynaklı Scala V2.11'i destekler. VVR 6.x ve sonraki sürümler yalnızca açık kaynaklı Scala V2.12'yi destekler. Python işiniz üçüncü taraf JAR paketlerine bağımlıysa JAR paketi bağımlılıklarının ilgili Scala sürümüyle eşleştiğinden emin olun.

İş Geliştirme

Table API/SQL ile DataStream API Arasında Seçim Yapma

PyFlink iki geliştirme yaklaşımını destekler: Table API/SQL ve DataStream API. Table API/SQL aşağıdaki nedenlerle önerilir:

  • Daha iyi performans: Table API/SQL'in optimize edilmiş yürütme planı tamamen JVM içinde çalışır. Buna karşılık DataStream API, JVM ile Python işlemi arasında satır bazında serileştirme ve serileştirmeyi kaldırma gerektirir; bu da önemli bir performans yükü getirir.

  • Daha kapsamlı özellikler: Table API/SQL, konektörler, veri biçimleri ve pencere işlevleri için daha eksiksiz destek sunar ve SQL işleriyle aynı konektör ekosistemini paylaşır.

  • Topluluk tavsiyesi: Apache Flink topluluğu, PyFlink için birincil geliştirme yönü olarak Table API/SQL'e öncelik verir.

DataStream API'yi yalnızca SQL ile ifade edilemeyen karmaşık özel mantık senaryolarında kullanın.

Geliştirme Referansları

Flink iş kodunu yerel olarak geliştirmek için aşağıdaki belgelere başvurabilirsiniz. Geliştirme tamamlandıktan sonra kodu Flink geliştirme konsoluna yükleyip işi dağıtın.

Proje Yapısı

Python işleri için önerilen proje yapısı aşağıdaki gibidir:

my-flink-python-project/
├── my_job.py                # Main job file.
├── udfs.py                  # User-defined functions (optional)
├── requirements.txt         # Third-party Python dependencies (optional)
└── config.properties        # Configuration file (optional)

Bağımlılık Yönetimi

Python işlerinde özel Python sanal ortamlarının, üçüncü taraf Python paketlerinin, JAR dosyalarının ve veri dosyalarının nasıl kullanılacağı hakkında bilgi için bkz. Python bağımlılıklarını kullanma.

Kullanıcı Tanımlı İşlevler (UDF'ler)

Aşağıda, hassas dize verilerini maskeleyen bir Python UDSF geliştirme örneği verilmiştir:

from pyflink.table import DataTypes
from pyflink.table.udf import udf

@udf(result_type=DataTypes.STRING())def mask_phone(phone: str):"""Phone number masking: retains the first 3 and last 4 digits, replacing the middle with ****"""if phone is None or len(phone) != 11:return phone.
    return phone[:3] + '****' + phone[7:]

Bu UDF'yi bir SQL işinde şu şekilde kullanın:

CREATE TEMPORARY FUNCTION mask_phone AS 'udfs.mask_phone' LANGUAGE PYTHON;INSERT INTO sink_table
SELECT name, mask_phone(phone) AS masked_phone
FROM source_table;

UDF'lerin nasıl kaydedileceği, güncelleneceği ve silineceği hakkında bilgi için bkz. UDF'leri yönetme.

Konektörleri Kullanma

Flink tarafından desteklenen konektörlerin listesi için bkz. Desteklenen konektörler. Bir konektörü kullanmak için aşağıdaki adımları uygulayın:

  1. Realtime Compute konsoluna giriş yapın.

  2. Hedef çalışma alanının Actions sütununda Console seçeneğine tıklayın.

  3. Sol gezinme bölmesinde Artifacts seçeneğine tıklayın.

  4. Upload Artifact seçeneğine tıklayın ve hedef konektörün Python paketini seçerek yükleyin.

    Kendi geliştirdiğiniz bir konektörü veya Flink tarafından sağlanan bir konektörü yükleyebilirsiniz. Flink tarafından sağlanan konektörlerin resmi Python paketlerini indirmek için bkz. Konektör listesi.

  5. O&M > Deployments sayfasında Create Deployment > Python Deployment seçeneğine tıklayın. Additional Dependencies alanı için hedef konektörün Python paketini seçin, diğer parametreleri yapılandırın ve işi dağıtın.

  6. Dağıtılan işin adına tıklayın. Configuration sekmesinde, Parameters bölümündeki Edit seçeneğine tıklayın. Other Configuration alanında Python konektör paketlerinin konum bilgilerini ekleyin.

    İşiniz birden çok konektör Python paketine bağımlıysa, örneğin connector-1.jar ve connector-2.jar adlı iki paket varsa yapılandırma aşağıdaki gibidir.

    pipeline.classpaths: 'file:///flink/usrlib/connector-1.jar;file:///flink/usrlib/connector-2.jar'
  7. Yerleşik konektörleri, veri biçimlerini ve katalogları (yalnızca VVR 11.2 ve sonraki sürümler) kullanmak için işin Additional Configuration altındaki Running Parameters bölümüne yapılandırmayı ekleyin. Örnek:

    ## Multiple connectors used.
    pipeline.used-builtin-connectors: kafka;sls
    ## Multiple data formats for data transmission.
    pipeline.used-builtin-formats: avro;parquet
    ## Multiple previously created catalogs used.
    pipeline.used-builtin-catalogs: catalogname1;catalogname2

Konektörlerin nasıl kullanılacağına ilişkin ayrıntılar için bkz. Tam örnek kod.

İş Hata Ayıklama

Sorun giderme amacıyla günlük bilgilerini çıktılamak için Python UDF'lerinin kod uygulamasında günlükleme kullanabilirsiniz. Örnek:

import logging

@udf(result_type=DataTypes.BIGINT())
def add(i, j):
  logging.info("hello world")
  return i + j

Günlük çıktısı alındıktan sonra günlükleri TaskManager günlük dosyalarında görüntüleyebilirsiniz.

Yerel Hata Ayıklama

Realtime Compute for Apache Flink varsayılan olarak İnternet erişimine sahip olmadığından kodunuz yerel ortamda çevrimiçi veri kaynaklarına doğrudan bağlanamayabilir. Yerel hata ayıklama için aşağıdaki yaklaşımları öneririz:

  • Birim testi: İşlev mantığının doğru olduğundan emin olmak için UDF'lerde bağımsız birim testleri gerçekleştirin.

  • Yerel yürütme: Girişleri simüle etmek için yerel veri kaynaklarını (dosyalar veya bellek içi veriler gibi) kullanın ve işleme mantığını doğrulamak için işi yerel olarak çalıştırın. Örnek:

    from pyflink.datastream import StreamExecutionEnvironment
    
    env = StreamExecutionEnvironment.get_execution_environment()# Use a local data source for testing.
    ds = env.from_collection([('Alice', 1), ('Bob', 2), ('Alice', 3)])
    ds.key_by(lambda x: x[0]).sum(1).print()
    env.execute("local_test")
  • Uzaktan hata ayıklama: Çevrimiçi veri kaynaklarına bağlanarak hata ayıklamak için bkz. Konektörlerle işleri yerel olarak çalıştırma ve hata ayıklama.

İş Dağıtımı

Python işi geliştirmesi tamamlandıktan sonra işi dağıtmak üzere Realtime Compute konsoluna yükleyin. Aşağıdaki adımları uygulayın:

  1. Realtime Compute konsoluna giriş yapın ve hedef çalışma alanına gidin.

  2. Sol gezinme bölmesinde Artifacts seçeneğine tıklayın ve Python iş dosyasını (.py veya .zip) yükleyin. Üçüncü taraf bağımlılıklar veya yapılandırma dosyaları varsa bunları da yükleyin.

  3. O&M > Deployments sayfasında Create Deployment > Python Deployment seçeneğine tıklayın ve dağıtım bilgilerini doldurun.


    Parameter


    Description


    Python File Path


    Yüklenen Python iş dosyasını seçin.


    Entry Module


    İş dosyası bir .py dosyasıysa bu alan gerekli değildir. İş dosyası bir .zip dosyasıysa giriş modülü adını belirtin, örneğin my_job.


    Additional Dependencies


    Varsa konektör JAR dosyalarını veya yapılandırma dosyalarını seçin.


    Python Libraries


    Varsa üçüncü taraf Python paketlerini (.whl veya .zip) seçin.


    Python Archives


    Varsa özel Python sanal ortamını (.zip) seçin.

  4. Deploy seçeneğine tıklayın.

Dağıtım parametreleri hakkında daha fazla bilgi için bkz. İş dağıtma.

Tam Örnek Kod

Bu örnekte Kafka'dan veri okuyan, basit işleme gerçekleştiren ve sonuçları MySQL'e yazan bir Python akış işi gösterilmektedir. Bu yalnızca referans amaçlıdır.

Not

Bu örnekte kontrol noktaları ve yeniden başlatma stratejileri gibi çalışma parametrelerinin yapılandırması yer almamaktadır. Bu yapılandırmaları işi dağıttıktan sonra Deployment Details sayfasında özelleştirebilirsiniz. Daha fazla bilgi için bkz. İş dağıtım bilgilerini yapılandırma.

import logging
import sys

from pyflink.common import Types
from pyflink.datastream import StreamExecutionEnvironment
from pyflink.table import StreamTableEnvironment

logging.basicConfig(stream=sys.stdout, level=logging.INFO)

def kafka_to_mysql():
    # Create the execution environment.
    env = StreamExecutionEnvironment.get_execution_environment()
    t_env = StreamTableEnvironment.create(env)

    # Create the Kafka source table.
    t_env.execute_sql("""
        CREATE TABLE kafka_source (
            `id` INT,
            `name` STRING,
            `score` INT,
            `event_time` TIMESTAMP(3),
            WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
        ) WITH (
            'connector' = 'kafka',
            'topic' = 'student_topic',
            'properties.bootstrap.servers' = 'your-kafka-broker:9092',
            'properties.group.id' = 'my-group',
            'scan.startup.mode' = 'latest-offset',
            'format' = 'json'
        )
    """)

    # Create the MySQL sink table.
    t_env.execute_sql("""
        CREATE TABLE mysql_sink (
            `id` INT,
            `name` STRING,
            `score` INT,
            PRIMARY KEY (id) NOT ENFORCED
        ) WITH (
            'connector' = 'jdbc',
            'url' = 'jdbc:mysql://your-mysql-host:3306/my_database',
            'table-name' = 'student',
            'username' = 'your_username',
            'password' = 'your_password'
        )
    """)

    # Filter records with scores greater than 60 and write them to MySQL.
    t_env.execute_sql("""
        INSERT INTO mysql_sink
        SELECT id, name, score
        FROM kafka_source
        WHERE score >= 60
    """)

if __name__ == '__main__':
    kafka_to_mysql()

Önceden Yüklenen Paketler

VVR-11

Aşağıdaki paketler Flink çalışma alanında önceden yüklenmiştir.


Package


Version


apache-beam


2,48.0


avro-python3


1,10.2


brotlipy


0,7.0


certifi


2022.12.7


cffi


1,15.1


charset-normalizer


2,0.4


cloudpickle


2,2.1


conda


22.11.1


conda-content-trust


0,1.3


conda-package-handling


1,9.0


crcmod


1,7


cryptography


38.0.1


Cython


3,0.12


dill


0,3.1.1


dnspython


2,7.0


docopt


0,6.2


exceptiongroup


1,3.0


fastavro


1,12.1


fasteners


0,20


find_libpython


0,5.0


grpcio


1,56.2


grpcio-tools


1,56.2


hdfs


2,7.3


httplib2


0,22.0


idna


3,4


importlib_metadata


8,7.0


iniconfig


2,1.0


isort


6,1.0


numpy


1,24.4


objsize


0,6.1


orjson


3,9.15


packaging


25,0


pandas


2,3.3


pemja


0,5.5


pip


22.3.1


pluggy


1,0.0


proto-plus


1,26.1


protobuf


4,25.8


py-spy


0,4.0


py4j


0,10.9.7


pyarrow


11,0.0


pyarrow-hotfix


0,6


pycodestyle


2,14.0


pycosat


0,6.4


pycparser


2,21


pydot


1,4.2


pymongo


4,15.4


pyOpenSSL


22.0.0


pyparsing


3,2.5


PySocks


1,7.1


pytest


7,4.4


python-dateutil


2,9.0


pytz


2025.2


regex


2025.11.3


requests


2,32.5


ruamel.yaml


0,18.16


ruamel.yaml.clib


0,2.14


setuptools


70.0.0


six


1,16.0


tomli


2,3.0


toolz


0,12.0


tqdm


4,64.1


typing_extensions


4,15.0


tzdata


2025.2


urllib3


1,26.13


wheel


0,38.4


zipp


3,23.0


zstandard


0,25.0


torch


2,5.1


torchvision


0,20.1


transformers


4,57.6


opencv-python-headless


4,10.0.84


pillow


11,3.0


ultralytics


8,4.66


easyocr


1,7.2


open-clip-torch


2,32.0


rembg


2,0.61


onnxruntime


1,16.3


av


14,2.0


librosa


0,11.0


soundfile


0,13.1


imagehash


4,3.2


safetensors


0,7.0


huggingface-hub


0,36.2


tokenizers


0,22.2


timm


1,0.27


scikit-learn


1,6.1


scikit-image


0,24.0


scipy


1,13.1


numba


0,60.0


llvmlite


0,43.0


matplotlib


3,9.4


pywavelets


1,6.0


tifffile


2024.8.30


shapely


2,0.7


pymatting


1,1.15


audioread


3,1.0


soxr


0,5.0.post1


joblib


1,5.3


threadpoolctl


3,6.0


sympy


1,13.1


mpmath


1,3.0


python-bidi


0,6.10


filelock


3,19.1


pyyaml


6,0.3


decorator


5,3.1


msgpack


1,1.2


ftfy


6,3.1


wcwidth


0,8.1


contourpy


1,3.0


cycler


0,12.1


fonttools


4,60.2


importlib-resources


5,4.0


kiwisolver


1,4.7


lazy-loader


0,5


attrs


26,1.0


jsonschema


4,25.1


jsonschema-specifications


2025.9.1


referencing


0,36.2


rpds-py


0,27.1


pooch


1,9.0


platformdirs


4,4.0

VVR-8

Aşağıdaki paketler Flink çalışma alanında önceden yüklenmiştir.


Package


Version


apache-beam


2,43.0


avro-python3


1,9.2.1


certifi


2025.7.9


charset-normalizer


3,4.2


cloudpickle


2,2.0


crcmod


1,7


Cython


0,29.24


dill


0,3.1.1


docopt


0,6.2


fastavro


1,4.7


fasteners


0,19


find_libpython


0,4.1


grpcio


1,46.3


grpcio-tools


1,46.3


hdfs


2,7.3


httplib2


0,20.4


idna


3,10


isort


6,0.1


numpy


1,21.6


objsize


0,5.2


orjson


3,10.18


pandas


1,3.5


pemja


0,3.2


pip


22.3.1


proto-plus


1,26.1


protobuf


3,20.3


py4j


0,10.9.7


pyarrow


8,0.0


pycodestyle


2,14.0


pydot


1,4.2


pymongo


3,13.0


pyparsing


3,2.3


python-dateutil


2,9.0


pytz


2025.2


regex


2024.11.6


requests


2,32.4


setuptools


58.1.0


six


1,17.0


typing_extensions


4,14.1


urllib3


2,5.0


wheel


0,33.4


zstandard


0,23.0

VVR-6

Aşağıdaki paketler Flink çalışma alanında önceden yüklenmiştir.


Package


Version


apache-beam


2,27.0


avro-python3


1,9.2.1


certifi


2024.8.30


charset-normalizer


3,3.2


cloudpickle


1,2.2


crcmod


1,7


Cython


0,29.16


dill


0,3.1.1


docopt


0,6.2


fastavro


0,23.6


future


0,18.3


grpcio


1,29.0


hdfs


2,7.3


httplib2


0,17.4


idna


3,8


importlib-metadata


6,7.0


isort


5,11.5


jsonpickle


2,0.0


mock


2,0.0


numpy


1,19.5


oauth2client


4,1.3


pandas


1,1.5


pbr


6,1.0


pemja


0,1.4


pip


20.1.1


protobuf


3,17.3


py4j


0,10.9.3


pyarrow


2,0.0


pyasn1


0,5.1


pyasn1-modules


0,3.0


pycodestyle


2,10.0


pydot


1,4.2


pymongo


3,13.0


pyparsing


3,1.4


python-dateutil


2,8.0


pytz


2024.1


requests


2,31.0


rsa


4,9


setuptools


47.1.0


six


1,16.0


typing-extensions


3,7.4.3


urllib3


2,0.7


wheel


0,42.0


zipp


3,15.0

Referanslar