이 페이지에서는 Cloud Data Fusion 일괄 파이프라인 문제를 해결하는 방법을 설명합니다.
파이프라인 오류: 텍스트 파일이 사용 중임
일괄 파이프라인을 실행할 때 다음 오류가 발생하여 실패합니다.
error=26, Text file busy
이 문제를 해결하려면 파이프라인이 실패할 때 파이프라인을 자동으로 재시도하는 트리거를 설정합니다.
- 파이프라인을 중지합니다.
- 트리거를 만듭니다. 이 경우 실행할 이벤트를 선택할 때 실패를 선택합니다. 자세한 내용은 다운스트림 파이프라인에서 인바운드 트리거 만들기를 참조하세요.
- 파이프라인을 시작합니다.
동시 파이프라인이 중단됨
Cloud Data Fusion에서 많은 동시 일괄 파이프라인을 실행하면 인스턴스에 부담을 가중시켜 작업이 Starting, Provisioning, Running 상태로 중단될 수 있습니다. 따라서 웹 인터페이스나 API 호출을 통해 파이프라인을 중지할 수 없습니다. 많은 파이프라인을 동시에 실행하면 웹 인터페이스가 느려지거나 응답하지 않을 수 있습니다. 이 문제는 여러 UI 요청이 백엔드의 HTTP 핸들러에 보내지기 때문에 발생합니다.
이 문제를 해결하려면 Cloud Data Fusion 흐름 제어를 사용하여 새 요청 수를 제어합니다.
파이프라인이 실행되는 동안 SSH 연결이 타임아웃됨
일괄 파이프라인을 실행할 때 다음 오류가 발생합니다.
java.io.IOException: com.jcraft.jsch.JSchException:
java.net.ConnectException: Connection timed out (Connection timed out)
이 문제를 해결하려면 다음 단계를 따르세요.
- 누락된 방화벽 규칙 (일반적으로 포트 22)이 있는지 확인합니다. 새 방화벽 규칙을 만들려면 Apache Spark용 관리형 서비스 클러스터 네트워크 구성을 참조하세요.
- Compute Engine Enforcer가 Cloud Data Fusion 인스턴스와 Apache Spark용 관리형 서비스 클러스터 간의 연결을 허용하는지 확인합니다.
응답 코드: 401. 오류: 알 수 없는 오류입니다.
일괄 파이프라인을 실행할 때 다음 오류가 발생합니다.
java.io.IOException: Failed to send message for program run program_run:
Response code: 401. Error: unknown error
BigQuery 플러그인이 설치된 파이프라인이 Access Denied 오류와 함께 실패
BigQuery 작업을 실행할 때 파이프라인이 Access Denied 오류로 실패하는 알려진 문제가 있습니다. 이는 다음 플러그인을 사용하는 파이프라인에 영향을 줍니다.
- BigQuery 소스
- BigQuery 싱크
- BigQuery 다중 테이블 싱크
- 변환 푸시다운
로그 오류 예시는 다음과 같습니다(사용 중인 플러그인에 따라 다를 수 있음).
POST https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/jobs
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Access Denied: Project xxxx: User does not have bigquery.jobs.create permission in project PROJECT_ID",
"reason" : "accessDenied"
} ],
"message" : "Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.",
"status" : "PERMISSION_DENIED"
}
이 예시에서 PROJECT_ID는 플러그인에 지정한 프로젝트 ID입니다. 플러그인에 지정된 프로젝트의 서비스 계정에 다음 중 하나 이상을 수행할 수 있는 권한이 없습니다.
- BigQuery 작업 실행
- BigQuery 데이터 세트 읽기
- 임시 버킷 만들기
- BigQuery 데이터세트 만들기
- BigQuery 테이블 만들기
이 문제를 해결하려면 플러그인에 지정한 프로젝트 (PROJECT_ID)에 누락된 역할을 부여합니다.
BigQuery 작업을 실행하려면 BigQuery 작업 사용자 역할(
roles/bigquery.jobUser)을 부여합니다.BigQuery 데이터 세트를 읽으려면 BigQuery 데이터 뷰어 역할(
roles/bigquery.dataViewer)을 부여합니다.임시 버킷을 만들려면 스토리지 관리자 역할(
roles/storage.admin)을 부여합니다.BigQuery 데이터 세트나 테이블을 만들려면 BigQuery 데이터 편집자 역할(
roles/bigquery.dataEditor)을 부여합니다.
자세한 내용은 플러그인 문제 해결 문서(Google BigQuery 멀티 테이블 싱크 문제 해결)를 참조하세요.
파이프라인이 오류 임곗값에서 중지되지 않음
오류 임곗값을 1로 설정하더라도 여러 오류가 발생한 후 파이프라인이 중지되지 않을 수 있습니다.
오류 임곗값은 달리 처리되지 않는 오류가 발생했을 때 지시문에서 발생한 예외를 대상으로 합니다. 지시문에 이미 emitError API가 사용된 경우 오류 임곗값이 활성화되지 않습니다.
특정 임곗값이 충족되지 않을 때 실패하는 파이프라인을 설계하려면
FAIL 지시문을 사용합니다.
FAIL 지시문에 전달되는 조건이 충족될 때마다 오류 임곗값으로 계산되고 임곗값에 도달한 후 파이프라인이 실패합니다.
임시 Apache Spark용 관리형 서비스 클러스터 삭제
파이프라인 실행 프로비저닝 중에 Cloud Data Fusion이 임시 Apache Spark용 관리형 서비스 클러스터를 만들면 파이프라인 실행이 완료된 후 클러스터가 삭제됩니다. 드물지만 클러스터 삭제가 실패합니다.
적극 권장: 최신 Cloud Data Fusion 버전으로 업그레이드하여 적절한 클러스터 유지보수를 수행하세요.
최대 유휴 시간 설정
이 문제를 해결하려면 Max Idle Time
옵션을 구성하세요. 이렇게 하면 파이프라인 완료에 대한 명시적 호출이 실패하더라도 Apache Spark용 관리형 서비스가 클러스터를 자동으로 삭제할 수 있습니다.
Max Idle Time은 Cloud Data Fusion 버전 6.4 이상에서 사용할 수 있습니다.
권장사항: 6.6 이전 버전의 경우 Max Idle Time을 30
분 이상으로 수동 설정하세요.
수동으로 클러스터 삭제
버전을 업그레이드하지 못하거나 Max Idle Time 옵션을 구성할 수 없는 경우 비활성 클러스터를 수동으로 삭제합니다.
클러스터가 생성된 각 프로젝트 ID를 가져옵니다.
파이프라인의 런타임 인수에서 Apache Spark용 관리형 서비스 프로젝트 ID가 실행에 맞게 맞춤설정되었는지 확인하세요.

Apache Spark용 관리형 서비스 프로젝트 ID가 명시적으로 지정되지 않은 경우 사용되는 프로비저닝 도구를 결정한 다음 프로젝트 ID를 확인합니다.
파이프라인 런타임 인수에서
system.profile.name값을 확인합니다.
프로비저닝 도구 설정을 열고 Apache Spark용 관리형 서비스 프로젝트 ID가 설정되었는지 확인합니다. 설정이 없거나 필드가 비어 있으면 Cloud Data Fusion 인스턴스가 실행 중인 프로젝트가 사용됩니다.
각 프로젝트에 대해 다음을 수행합니다.
콘솔에서 프로젝트를 열고 Apache Spark용 관리형 서비스 클러스터 페이지로 이동합니다. Google Cloud
생성된 날짜부터 가장 오래된 것부터 최신 순으로 클러스터를 정렬합니다.
정보 패널이 숨겨져 있으면 정보 패널 표시 를 클릭하고 라벨 탭으로 이동합니다.
사용 중이지 않은 모든 클러스터(예: 하루 이상 경과)에 Cloud Data Fusion 버전 라벨이 있는지 확인합니다. 이는 Cloud Data Fusion에서 생성되었음을 나타냅니다.
클러스터 이름 옆에 있는 체크박스를 선택하고 삭제 를 클릭합니다.
기본 또는 보조 작업자가 있는 Apache Spark용 관리형 서비스 클러스터에서 실행할 때 파이프라인이 실패함
Cloud Data Fusion 버전 6.8 및 6.9에서는 Apache Spark용 관리형 서비스 클러스터에서 파이프라인을 실행하면 파이프라인이 실패하는 문제가 발생합니다.
ERROR [provisioning-task-2:i.c.c.i.p.t.ProvisioningTask@161] - PROVISION task failed in REQUESTING_CREATE state for program run program_run:default.APP_NAME.UUID.workflow.DataPipelineWorkflow.RUN_ID due to
Caused by: io.grpc.StatusRuntimeException: CANCELLED: Failed to read message.
Caused by: com.google.protobuf.GeneratedMessageV3$Builder.parseUnknownField(Lcom/google/protobuf/CodedInputStream;Lcom/google/protobuf/ExtensionRegistryLite;I)Z.
이 문제를 해결하려면 패치 버전 6.8.3.1, 6.9.2.1 이상으로
업그레이드합니다.
Apache Spark용 관리형 서비스 2.0에서 Cloud Storage 플러그인이 정규 표현식으로 간헐적으로 실패함
Cloud Storage 플러그인이 경로에서 * 정규 표현식 패턴을 사용하고 실행 환경이 Apache Spark용 관리형 서비스 2.0인 경우 Cloud Data Fusion 버전 6.10.1에서 파이프라인이 간헐적으로 실패할 수 있습니다.
이 문제를 해결하려면 다음 중 하나를 수행하세요.
- Apache Spark용 관리형 서비스 이미지를 버전 2.1 이상으로 업데이트합니다.
- 이전 버전의 Cloud Storage 플러그인으로 되돌립니다.
- Apache Spark용 관리형 서비스 실행기에 할당된 메모리를 늘립니다.
Apache Spark용 관리형 서비스 2.2에서 파이프라인이 NoSuchMethodError로 실패함
Cloud Data Fusion 버전 6.10.1.1 이상에서는 Apache Spark용 관리형 서비스 2.2에서 실행할 때 파이프라인이 다음 오류와 함께 실패할 수 있습니다.
java.lang.NoSuchMethodError: 'org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
org.apache.spark.sql.catalyst.encoders.RowEncoder.apply(org.apache.spark.sql.types.StructType)'
이 문제를 해결하려면 다음 중 하나를 수행하세요.
- Apache Spark용 관리형 서비스 이미지를 버전 2.1로 재구성합니다. 자세한 내용은 Cloud Data Fusion의 Apache Spark용 관리형 서비스 이미지 버전 변경을 참조하세요.
- Cloud Data Fusion 인스턴스를 버전 6.11로 업그레이드합니다.
참조 이름에 공백이 포함된 경우 여러 데이터베이스 테이블 플러그인이 실패함
Cloud Data Fusion 버전 6.10.1 이상에서는 참조 이름 필드에 공백 문자가 포함된 경우 여러 데이터베이스 테이블 일괄 소스를 사용하는 파이프라인이 실패할 수 있습니다.
이 문제를 해결하려면 허브에서 여러 데이터베이스 테이블 플러그인을 버전 1.4.1 이상으로 업데이트합니다. 업데이트된 버전에서는 참조 이름 필드에 공백을 허용하지 않습니다.