문제 해결

이 페이지에서는 Cloud Data Fusion 문제를 해결하는 방법을 설명합니다.

파이프라인 중단됨

6.2 이전 버전의 Cloud Data Fusion에서는 파이프라인이 Starting 또는 Running 상태에서 중단되는 알려진 문제가 있습니다. 파이프라인을 중지하면 다음과 같은 Malformed reply from SOCKS server 오류가 발생합니다. 이 오류는 Dataproc 마스터 노드에 적절한 메모리 리소스가 부족하기 때문에 발생합니다.

권장사항

다음 실행 시 파이프라인이 중단되지 않도록 하려면 Dataproc 클러스터를 삭제합니다. 그런 다음 Compute Engine 프로필의 마스터 메모리를 업데이트합니다.

  • 필수: Dataproc 클러스터 크기를 최소 2개의 CPU로, 마스터 노드는 최소 8GB로 늘립니다.
  • 선택사항: Cloud Data Fusion 6.2로 이전합니다. 버전 6.2부터는 파이프라인 실행이 Dataproc Job API를 통해 제출되고 마스터 노드에서 과도한 메모리 사용량이 부과되지 않습니다. 하지만 프로덕션 작업에는 2개의 CPU와 8GB 마스터 노드를 사용하는 것이 좋습니다.

클러스터 크기 변경

REST API

클러스터 크기를 변경하려면 Compute Engine 프로필을 내보낸 다음 REST API를 사용하여 메모리 설정을 업데이트합니다.

  1. 컴퓨팅 프로필을 내보냅니다. JSON 파일에 로컬로 저장됩니다.
  2. JSON 파일에서 다음 메모리 설정을 수정합니다. masterCPUs를 최소 2으로 업데이트하고 masterMemoryMB을 최소 8192MB(약 8GB)로 업데이트합니다.

    {
     "name": "masterCPUs",
     "value": "2",
     "isEditable": true
    },
    {
     "name": "masterMemoryMB",
     "value": "8192",
     "isEditable": true
    },
    
  3. REST API를 사용하여 컴퓨팅 프로필을 업데이트하세요. UI에서 cURL 또는 HTTP Executor를 사용할 수 있습니다.

    cURL의 경우 다음 명령어를 사용합니다.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://<data-fusion-instance-url>/api/v3/profiles/<profile-name> -X PUT -d @<path-to-json-file>

파이프라인 복구

중단된 파이프라인을 복구하려면 인스턴스를 다시 시작하세요. REST API 또는 gcloud 명령줄 도구를 사용하여 인스턴스를 다시 시작할 수 있습니다.

REST API

인스턴스를 다시 시작하려면 restart() 메서드를 사용합니다.

gcloud

인스턴스를 다시 시작하려면 다음 명령어를 실행합니다.

gcloud beta data-fusion instances restart

동시 파이프라인이 중단됨

여러 개의 동시 파이프라인을 실행할 때 다음 문제가 발생할 수 있습니다. 파이프라인 작업이 Starting, Provisioning, Running 상태로 중단됩니다. Cloud Data Fusion UI가 느려지거나 응답하지 않습니다. 이 경우 UI에서 또는 API 호출을 사용하여 파이프라인을 중지하지 못할 수 있습니다.

권장사항

  1. 인스턴스를 다시 시작합니다.

    REST API

    인스턴스를 다시 시작하려면 restart() 메서드를 사용합니다.

    gcloud

    인스턴스를 다시 시작하려면 다음 명령어를 실행합니다.

    gcloud beta data-fusion instances restart

  2. 시차를 두고 동시 파이프라인이 실행됩니다. 이렇게 할 수 없거나 문제가 지속되면 지원 받기를 참조하세요.

연결자 플러그인에 조인 조건이 표시되지 않음

Cloud Data Fusion 버전 6.4.0에서는 기본 조인 조건과 고급 조인 조건 간에 전환할 수 있는 연결자 플러그인을 사용할 때 다음과 같은 문제가 발생합니다. 이전 버전에서 파이프라인을 업그레이드하거나 가져온 후 연결자 속성 페이지를 열면 구성된 파이프라인의 기본 조인 조건이 표시되지 않습니다. 이 문제는 파이프라인이 실행되는 방식에 영향을 주지 않으며 조건이 여전히 존재합니다.

권장사항

이 문제를 해결하려면 다음 단계를 따르세요.

  1. 시스템 관리자 > 구성 > HTTP 호출을 클릭합니다.
  2. HTTP 호출 실행자 필드에 다음을 입력합니다.

    PUT namespaces/system/artifacts/core-plugins/versions/CORE_PLUGIN_VERSION/properties/widgets.Joiner-batchjoiner?scope=SYSTEM

    CORE_PLUGIN_VERSION에는 최신 주요 플러그인 버전을 사용합니다.

  3. 본문 필드에 다음 JSON 콘텐츠를 붙여넣습니다.

    0967c-fdb73
    2ee80-67055
    b41f9-1dcd9
    425a5-cf822
    7e1a0-485e6
    eda47-040ea
    27430-fabba
    803ec-2c6e7
    8f7e0-2738d
    e22b5-4c375
    b3abb-778e4
    2deda-2d6be
    47855-b451d
    3e356-1268e
    f0ff9-876b6
    623df-8703a
    

  4. 보내기를 클릭합니다.

파이프라인 페이지가 다른 창에서 열리는 경우 조인 조건을 보기 위해 페이지를 새로고침해야 할 수 있습니다.

SQL Server용 복제가 변경된 테이블의 모든 열을 복제하지 않음

SQL Server의 테이블에서 데이터를 복제하는 복제 작업에 다음과 같은 문제가 발생합니다. 복제 소스 테이블에 새로 추가된 열이 있는 경우 CDC 테이블에 자동으로 추가되지 않습니다. 기본 CDC 테이블에 수동으로 추가해야 합니다.

권장사항

이 문제를 해결하려면 다음 단계를 따르세요.

  1. CDC 인스턴스를 사용 중지합니다.

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. CDC 인스턴스를 다시 사용 설정합니다.

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. 새 복제 작업을 만드세요.

자세한 내용은 소스 테이블 변경사항 처리를 참조하세요.

복제 및 SQL Server Always On 데이터베이스

Microsoft SQL Server 소스는 Always On 읽기 전용 복제본에서 변경사항을 캡처할 수 있습니다. 이 설정에서는 런타임 인수 source.connector.database.applicationIntent=ReadOnly를 복제 작업에 전달해야 합니다. 이 런타임 인수가 없으면 작업이 실패하고 다음 오류가 발생합니다.

Producer failure java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException: Failed to update database "DATABASE_NAME" because the database is read-only.

권장사항

이 오류를 해결하려면 source.connector.database.applicationIntent=ReadOnly를 런타임 인수로 설정합니다. 내부적으로 snapshot.isolation.modesnapshot으로 설정합니다.

BigQuery 싱크 버전 0.17.0에서 파이프라인 실패 또는 잘못된 결과 제공

BigQuery 싱크 플러그인 버전 0.17.0이 포함된 데이터 파이프라인이 실패하거나 잘못된 결과를 제공하는 알려진 문제가 있습니다. 이 문제는 버전 0.17.1에서 해결되었습니다.

권장사항

이 문제를 해결하려면 Google Cloud 플러그인 버전을 업데이트하세요.

  1. Google Cloud 버전 0.17.1 이상을 다운로드합니다.
    1. Cloud Data Fusion 웹 UI에서 허브를 클릭합니다.
    2. Google Cloud 버전 0.17.1 이상을 선택하고 배포를 클릭합니다.
  2. 다음 옵션 중 하나를 사용하여 파이프라인에서 사용하는 모든 Google Cloud 플러그인을 동일한 버전으로 변경합니다.
    • 모든 플러그인 버전을 한 번에 업데이트하려면 기존 파이프라인을 내보낸 후 다시 가져옵니다. 가져올 때 모든 플러그인을 최신 버전으로 바꾸는 옵션을 선택합니다.
    • 플러그인을 수동으로 업데이트하려면 다음 안내를 따르세요.
      1. 파이프라인 스튜디오 페이지를 엽니다.
      2. 싱크 메뉴에서 BigQuery 위로 마우스 포인터를 가져간 후 변경을 클릭합니다.
      3. 버전 0.17.1 이상을 선택합니다.
      4. 사용하는 다른 Google Cloud 플러그인(예: BigQuery 소스 플러그인)에도 같은 작업을 반복합니다.

SQL Server 소스 플러그인은 날짜/시간 데이터 유형 지원

이전 버전의 SQL Server 소스(버전 1.5.3 이하)에서는 다음과 같습니다.

  • SQL Server datetimedatetime2 데이터 유형은 CDAP timestamp 데이터 유형에 매핑됩니다.
  • datetimeoffset 데이터 유형은 CDAP string 데이터 유형에 매핑됩니다.

플러그인 버전 1.5.4는 이전 버전과 호환되지 않지만 파이프라인의 다운스트림 단계가 소스의 출력 스키마에 의존하는 경우 1.5.4 버전으로 업그레이드한 후 1.5.3에서 작동하는 파이프라인이 작동하지 않을 수 있습니다(출력 스키마가 이제 변경되기 때문). datetime, datetime2, datetimeoffset에 null 값이 있으면 버전 1.5.4에서 NullPointerException이 발생합니다.

버전 1.5.5 이상은 datetime과 더욱 호환됩니다. 1.5.3에서 작동하는 파이프라인은 대부분의 경우 1.5.5로 업그레이드한 후에도 작동합니다. 소스 플러그인의 기존 출력 스키마 설정이 적용됩니다. 예를 들어 출력 스키마에서 datetimedatetime2 데이터 유형을 timestamp 데이터 유형에 매핑하고 datetimeoffset 데이터 유형을 string 데이터 유형에 매핑하기로 이미 설정한 경우 이 스키마 설정이 계속 적용됩니다.

데이터베이스 이름, 스키마 이름 또는 테이블 이름에 매크로를 사용하는 경우와 출력 스키마를 수동으로 지정하지 않은 경우는 예외입니다. 따라서 스키마는 런타임 시 감지 및 매핑됩니다. 이전 버전(1.5.3)은 런타임 시 datetimedatetime2timestamp 데이터 유형에 매핑하고 datetimeoffset 데이터 유형을 string 데이터 유형에 매핑합니다. 1.5.5 이상에서는 런타임 시 datetime에 매핑됩니다.

권장사항

이 문제를 해결하려면 파이프라인을 버전 1.5.5 이상을 사용하도록 업그레이드합니다.

업그레이드 후에는 SQL Server datetime, datetime2, datetimeoffset 데이터 유형이 런타임 시 CDAP datetime 데이터 유형에 매핑됩니다. 원래 타임스탬프(datetimedatetime2이 매핑되었음) 또는 문자열(datetimeoffset이 매핑되었음)을 사용하는 다운스트림 스테이지 또는 싱크가 있는 경우 업데이트하거나 datetime 데이터를 사용할 수 있습니다. 자세한 내용은 CDAP SQL Server 배치 소스를 참조하세요.