【flink脚本系列】pyflink-shell.sh 功能用法示例源码解析

pyflink-shell.sh

文章目录

  • pyflink-shell.sh
    • 脚本主要功能
    • 脚本加上中文注释
    • 该脚本多种用法及其代码示例
    • flink中其他类似脚本

脚本主要功能

该脚本用于启动 PyFlink 的交互式 Shell。它设置必要的环境变量,并调用 pyflink.shell 模块来执行 PyFlink Shell。

脚本加上中文注释

bin=`dirname "$0"`
bin=`cd "$bin"; pwd`
. "$bin"/find-flink-home.sh

_FLINK_HOME_DETERMINED=1

. "$FLINK_HOME"/bin/config.sh

FLINK_CLASSPATH=`constructFlinkClassPath`
PYTHON_JAR_PATH=`echo "$FLINK_OPT_DIR"/flink-python*.jar`

PYFLINK_PYTHON="${PYFLINK_PYTHON:-"python"}"

# 为了让 Python 能够找到 Flink 的 Jars
export FLINK_BIN_DIR=$FLINK_BIN_DIR
export FLINK_HOME

# 将 pyflink、py4j 和 cloudpickle 添加到 PYTHONPATH 中
export PYTHONPATH="$FLINK_OPT_DIR/python/pyflink.zip:$PYTHONPATH"
PY4J_ZIP=`echo "$FLINK_OPT_DIR"/python/py4j-*-src.zip`
CLOUDPICKLE_ZIP=`echo "$FLINK_OPT_DIR"/python/cloudpickle-*-src.zip`
export PYTHONPATH="$PY4J_ZIP:$CLOUDPICKLE_ZIP:$PYTHONPATH"

PARSER="org.apache.flink.client.python.PythonShellParser"
function parse_options() {
    "${JAVA_RUN}" ${JVM_ARGS} -cp ${FLINK_CLASSPATH}:${PYTHON_JAR_PATH} ${PARSER} "$@"
    printf "%d\0" $?
}

# 关闭 posix 模式,因为它不允许进程替换
set +o posix

# 如果命令包含 --help 或 -h 选项,脚本将直接运行 PythonShellParser 程序来输出帮助消息到标准输出。
if [[ "$@" =~ '--help' ]] || [[ "$@" =~ '-h' ]]; then
    "${JAVA_RUN}" ${JVM_ARGS} -cp ${FLINK_CLASSPATH}:${PYTHON_JAR_PATH} ${PARSER} "$@"
    exit 0
fi

OPTIONS=()
while IFS= read -d '' -r ARG; do
  OPTIONS+=("$ARG")
done < <(parse_options "$@")

COUNT=${#OPTIONS[@]}
LAST=$((COUNT - 1))
LAUNCHER_EXIT_CODE=${OPTIONS[$LAST]}

# 某些 JVM 失败会导致错误打印到标准输出(而不是标准错误),这会导致解析启动器输出的代码混乱。
# 在这种情况下,检查退出码是否为整数,如果不是,将其视为特殊错误处理。
if ! [[ ${LAUNCHER_EXIT_CODE} =~ ^[0-9]+$ ]]; then
  echo "${OPTIONS[@]}" | head -n-1 1>&2
  exit 1
fi

if [[ ${LAUNCHER_EXIT_CODE} != 0 ]]; then
  exit ${LAUNCHER_EXIT_CODE}
fi

OPTIONS=("${OPTIONS[@]:0:$LAST}")

export SUBMIT_ARGS=${OPTIONS[@]}

# -i: 开启交互模式
# -m: 在压缩包中执行 shell.py
${PYFLINK_PYTHON} -i -m pyflink.shell

该脚本多种用法及其代码示例

以下是使用 pyflink-shell.sh 脚本的一些常见用法和相应的代码示例:

  1. 启动 PyFlink Shell:
./pyflink-shell.sh
  1. 查看帮助信息:
./pyflink-shell.sh --help
  1. 使用其他 Python 解释器启动 PyFlink Shell(例如:python3):
PYFLINK_PYTHON=python3 ./pyflink-shell.sh

flink中其他类似脚本

在 Flink 中,还有其他类似的脚本可用于不同的操作和用途。以下是其中一些脚本:

  • start-cluster.sh:用于启动 Flink 集群。
  • stop-cluster.sh:用于停止 Flink 集群。
  • flink run :用于提交和运行 Flink 应用程序。
  • flink cancel :用于取消正在运行的 Flink 作业。
  • flink savepoint :用于创建 Flink 作业的保存点。

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