6. Flink는 운영자에게 명령줄 매개변수를 전달합니다. "flink 시리즈에 대한 심층적인 이해"

1. "Flink 핵심 설계 및 실행 원리에 대한 심층적 이해"라는 책의 저자 2.
flink와 spring의 생태학적 통합에 전념하는 인기 있는 GitHub 프로젝트 fink-boot(800+)의 개발자 3. 상장된 최고 컨설팅 회사의 전 기술 관리자, 현재 대규모 공장의 수석 개발자 4. 인증서: 소프트웨어 디자이너, Apache kylin 관리자 5. 방향: 자바 서버 개발, 분산 개발, 실시간 컴퓨팅, 빅 데이터
개발
엔지니어

함수에 전달된 매개변수

Flink는 사용자 정의 함수에 매개 변수를 전달하는 프로세스를 단순화하는 세 가지 방법을 제공합니다. 생성자나 withParameters(Configuration) 메서드 또는 ExecutionConfig 인터페이스를 사용하여 매개 변수를 함수에 전달할 수 있습니다.

명령줄 인수를 함수에 전달

여러 번 개발된 Flink 애플리케이션은 입력 및 출력 소스(예: 파일 경로 또는 서비스 주소), 시스템 매개변수(병렬성, 런타임 구성) 및 애플리케이션별 매개변수(일반적으로 사용자 기능에 사용됨)를 지정하는 데 사용되는 외부 구성 매개변수에 의존합니다.

Flink는 이러한 문제를 해결하기 위해 ParameterTool이라는 간단하고 실용적인 매개변수 파싱 도구 클래스를 제공합니다.물론 개발자는 ParameterTool 도구 클래스를 사용할 필요가 없으며 Commons CLI 및 argparse4j와 같은 다른 프레임워크의 파싱 매개변수 도구 클래스도 Flink 프로그램에서 사용할 수 있습니다.

1. .properties 파일에서 읽기

다음 메서드는 속성 파일을 읽고 키/값 쌍을 제공합니다.

import org.apache.flink.api.java.utils.ParameterTool;
import java.io.InputStream;

InputStream propertiesFileInputStream = ParamTemplate.class.getClassLoader().getResourceAsStream("flink-param.properties");

ParameterTool parameter = ParameterTool.fromPropertiesFile(propertiesFileInputStream);

2. 명령줄 매개변수 읽기

명령줄 매개변수가 ParameterTool 도구 클래스에서 요구하는 형식을 준수하면 명령줄 매개변수를 올바르게 구문 분석할 수 있습니다. 명령줄의 형식은 "-input file:///mydata --elements 42" 및 기타 매개변수와 같습니다.

import org.apache.flink.api.java.utils.ParameterTool;
// 输出参数 --input hdfs:///mydata --elements 42
public static void main(String[] args) {
    
    ParameterTool parameter = ParameterTool.fromArgs(args);
}

3. ParameterTool에서 값 읽기

ParameterTool 자체는 값에 접근하기 위한 다양한 방법을 제공합니다.다음은 몇 가지 예입니다.더 많은 방법은 ParameterTool 클래스의 소스 코드를 참조하십시오.

ParameterTool parameters = // ...
parameter.getRequired("input");//返回给定键的String类型的值,如果键不存在,则该方法将会失败。

parameter.get("output", "myDefaultValue");//返回给定键的String类型的值,如果键不存在,它将返回给定的默认值"myDefaultValue"。

parameter.getLong("expectedCount", -1L);//返回给定键的Long类型的值,如果键不存在,它将返回给定的默认值-1L,如果该值不是Long类型,则该方法将会失败。

int number=parameter.getNumberOfParameters();//返回ParameterTool中的参数数量。

그 이후로 애플리케이션의 주요 기능에서 이러한 메소드의 반환 값을 직접 사용할 수 있습니다.

import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

ParameterTool parameters = ParameterTool.fromArgs(args);
int parallelism = parameters.get("mapParallelism", 2);

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(parallelism);
......

Supongo que te gusta

Origin blog.csdn.net/hbly979222969/article/details/125040035
Recomendado
Clasificación