PyFlink 安装和使用

环境准备

1. 操作系统

Ubuntu 20.04
笔者使用 Multipass 安装 Ubuntu 虚拟机
参考:
《如何在 MacOS 安装轻量级虚拟机工具 Multipass》
《如何在 Windows 安装轻量级虚拟机工具 Multipass》

2. 安装 python3 和 pip

$ sudo apt update
$ sudo apt install python3 python3-pip
$ python3 --version
Python 3.8.10

## 创建软连接
$ sudo ln -s /usr/bin/python3 /usr/bin/python
ubuntu@ubuntu:~$ python --version
Python 3.8.10

$ sudo python -m pip install --upgrade pip
$ sudo python -m pip install --upgrade setuptools
$ pip --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

安装 PyFlink

sudo python -m pip install apache-flink==1.13.6

WordCount 案例

wordcount.py 代码如下:

from pyflink.table import DataTypes, TableEnvironment, EnvironmentSettings
from pyflink.table.descriptors import Schema, OldCsv, FileSystem
from pyflink.table.expressions import lit

settings = EnvironmentSettings.new_instance().in_batch_mode().use_blink_planner().build()
t_env = TableEnvironment.create(settings)

# write all the data to one file
t_env.get_config().get_configuration().set_string("parallelism.default", "1")
t_env.connect(FileSystem().path('/tmp/input')) \
    .with_format(OldCsv().field('word', DataTypes.STRING())) \
    .with_schema(Schema().field('word', DataTypes.STRING())) \
    .create_temporary_table('mySource')

t_env.connect(FileSystem().path('/tmp/output')) \
    .with_format(OldCsv().field_delimiter('\t') \
    .field('word', DataTypes.STRING()) \
    .field('count', DataTypes.BIGINT())) \
    .with_schema(Schema() \
    .field('word', DataTypes.STRING()) \
    .field('count', DataTypes.BIGINT())) \
    .create_temporary_table('mySink')

tab = t_env.from_path('mySource')
tab.group_by(tab.word).select(tab.word, lit(1).count).execute_insert('mySink').wait()

在shell 命令行执行:

 $ echo -e  "flink\npyflink\nflink" > /tmp/input
 $ sudo python wordcount.py
 $ cat /tmp/output
 flink   2
 pyflink 1

你可能感兴趣的:(Flink,Python,python,flink,大数据,big,data)