Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Java 변환 시작하기

Java transforms는 Java 라이브러리와 Spark로 Foundry 데이터셋을 처리합니다. 표를 받는 고수준 API와 파일 및 명시적 쓰기를 다루는 저수준 API가 있으며 배치, 증분 파이프라인과 저장소 사이 코드 공유를 지원합니다.

Java에서 Spark DataFrame은 Dataset<Row>로 표현합니다. 표 연산만 필요하면 고수준 변환이 권장되며, 파일 접근이나 여러 출력이 필요하면 저수준 변환을 사용합니다.

첫 변환

  1. 프로젝트에서 + New > Repository를 선택하고 Language template을 Java로 정합니다.
  2. Titanic 예제 ZIP을 내려받아 안의 titanic.csv를 Foundry 데이터셋으로 가져옵니다.
  3. 저장소의 Java 소스 폴더인 transforms-java/src/main/java 아래에 변환 클래스를 만듭니다. 기본 템플릿의 myproject/datasets/HighLevelAutoTransform.java를 사용할 수도 있으며 주석으로 된 예제를 사용하려면 주석을 해제해야 합니다.
  4. 입력과 출력 경로를 같은 프로젝트 범위의 실제 자산으로 지정합니다. 다른 프로젝트의 입력은 프로젝트 참조가 필요합니다.

다음은 myproject/datasets/FemalePassengers.java의 전체 예입니다. 경로는 가상 프로젝트 값이며 실제 업로드한 Titanic 데이터셋에는 Sex 열이 있어야 합니다.

package myproject.datasets;

import com.palantir.transforms.lang.java.api.Compute;
import com.palantir.transforms.lang.java.api.Input;
import com.palantir.transforms.lang.java.api.Output;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;

public final class FemalePassengers {
    @Compute
    @Output("/Example Project/Outputs/female_passengers")
    public Dataset<Row> compute(
            @Input("/Example Project/Inputs/titanic") Dataset<Row> input) {
        return input.filter(input.col("Sex").equalTo("female"));
    }
}

이 변환은 여러 입력에서 표 하나를 반환할 수 있는 고수준 방식이며 입력과 출력 annotation으로 자동 등록합니다.

파이프라인 진입점

Java 하위 프로젝트에는 PipelineDefiner 구현 하나가 필요합니다. myproject/MyPipelineDefiner.java에서 변환 패키지를 등록합니다.

package myproject;

import com.palantir.transforms.lang.java.api.Pipeline;
import com.palantir.transforms.lang.java.api.PipelineDefiner;

public final class MyPipelineDefiner implements PipelineDefiner {
    @Override
    public void define(Pipeline pipeline) {
        pipeline.autoBindFromPackage("myproject.datasets");
    }
}

transforms-java/src/main/resources/META-INF/services/com.palantir.transforms.lang.java.api.PipelineDefiner에는 다음 구현 이름 한 줄을 둡니다.

myproject.MyPipelineDefiner

변경을 commit하고 checks가 성공하면 출력 데이터셋을 열어 빌드합니다. 출력의 실행 로직은 저장소 등록과 발행 절차를 거쳐야 합니다.

다음으로 다룰 계약

변환과 등록 방식에서 고수준/저수준과 자동/수동 조합, TransformContext를 설명합니다. 단위 테스트, 최대 실행 시간, 저장소 간 코드 공유, 로컬 개발을 함께 구성할 수 있습니다.

새 입력만 처리하려면 증분 읽기와 쓰기를 함께 설정합니다. 파일 및 ZIP 처리, 압축 CSV 읽기와 Spark SQL 연산은 각각 파일 입력과 표 연산을 다룹니다. Pipeline Builder에서도 재사용할 Java 로직은 UDF 정의와 게시로 구성합니다.