다음을 통해 공유


자동 로더 FAQ

Databricks 자동 로더에 대한 일반적인 질문입니다.

파일이 추가되거나 덮어쓰여질 때 자동 로더가 파일을 다시 처리하나요?

cloudFiles.allowOverwrites가 사용하도록 설정되지 않는 한 파일은 정확히 한 번 처리됩니다. 파일을 추가하거나 덮어쓰는 경우 Azure Databricks는 처리할 파일의 버전을 보장할 수 없습니다. 또한 자동 로더가 파일 알림 및 디렉터리 목록을 통해 새 파일을 식별할 수 있는 파일 알림 모드에서 사용하도록 설정할 cloudFiles.allowOverwrites 때도 주의해야 합니다. 파일 알림 이벤트 시간과 파일 수정 시간 간의 불일치로 인해 자동 로더는 두 개의 서로 다른 타임스탬프를 얻을 수 있으므로 파일이 한 번만 작성된 경우에도 동일한 파일을 두 번 수집할 수 있습니다.

일반적으로 Databricks는 자동 로더를 사용하여 변경할 수 없는 파일만 수집하고 설정을 cloudFiles.allowOverwrites방지하는 것이 좋습니다. 요구 사항을 충족하지 않는 경우 Azure Databricks 계정 팀에 문의하세요.

내 데이터 파일이 지속적으로 도착하지 않고 규칙적인 간격(예: 하루에 한 번)으로 이 원본을 사용해야 하는 경우 어떤 이점이 있나요?

이 경우 (Databricks Runtime 10.4 LTS 이상에서 사용 가능) 구조적 스트리밍 작업을 설정하고 Trigger.AvailableNow 예상 파일 도착 시간 이후에 실행되도록 예약할 수 있습니다. 자동 로더는 자주 업데이트되지 않거나 자주 업데이트되는 경우 모두 잘 작동합니다. 최종 업데이트가 매우 크더라도 자동 로더는 입력 크기에 맞게 확장됩니다. 자동 로더의 효율적인 파일 검색 기술과 스키마 진화 기능은 자동 로더를 증분 데이터 수집에 권장되는 방법으로 만듭니다.

스트림을 다시 시작할 때 검사점 위치를 변경하면 어떻게 되나요?

검사점 위치는 스트림의 중요한 식별 정보를 유지합니다. 검사점 위치를 효과적으로 변경한다는 것은 이전 스트림을 중단하고 새 스트림을 시작했음을 의미합니다.

이벤트 Notification Services를 미리 만들어야 하나요?

아니요. 파일 알림 모드를 선택하고 필요한 권한을 제공하면 자동 로더가 파일 Notification Services를 만들 수 있습니다. 자동 로더 파일 알림 모드란?을 참조하세요.

자동 로더에서 만든 이벤트 알림 리소스를 어떻게 정리하나요?

클라우드 리소스 관리자를 사용하여 리소스를 나열하고 삭제할 수 있습니다. 클라우드 공급자의 UI 또는 API를 사용하여 이러한 리소스를 수동으로 삭제할 수도 있습니다.

동일한 버킷/컨테이너의 다른 입력 디렉터리에서 여러 스트리밍 쿼리를 실행할 수 있나요?

예, 부모-자식 디렉터리가 아닌 한 가능합니다. 예를 들어, /usage/prod-logs의 자식 디렉터리이기 때문에 prod-logs/prod-logs/usage/는 작동하지 않습니다.

내 버킷 또는 컨테이너에 기존 파일 알림이 있는 경우 이 기능을 사용할 수 있나요?

예, 입력 디렉터리가 기존 알림 접두어(예: 위의 부모-자식 디렉터리)와 충돌하지 않는 한 가능합니다.

자동 로더는 스키마를 어떻게 유추하나요?

DataFrame이 처음 정의되면 자동 로더에서 원본 디렉터리를 나열하고, 가장 최근(파일 수정 시간 기준)의 50GB의 데이터 또는 1,000개 파일을 선택하고, 이러한 파일을 사용하여 데이터 스키마를 유추합니다.

또한 자동 로더에서 원본 디렉터리 구조를 검사하여 파티션 열을 유추하고 /key=value/ 구조가 포함된 파일 경로를 찾습니다. 예를 들어 다음과 같이 원본 디렉터리에 일관되지 않은 구조가 있습니다.

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

자동 로더에서 파티션 열이 비어 있다고 유추합니다. cloudFiles.partitionColumns를 사용하여 디렉터리 구조에서 열을 명시적으로 구문 분석합니다.

원본 폴더가 비어 있을 때 자동 로더는 어떻게 작동하나요?

원본 디렉터리가 비어 있는 경우 유추를 수행할 데이터가 없으므로 자동 로더에서 스키마를 제공해야 합니다.

자동 로더는 스키마를 언제 유추하나요? 모든 마이크로 일괄 처리 후에 자동으로 진화하나요?

DataFrame이 코드에 처음 정의되면 스키마가 유추됩니다. 각 마이크로 일괄 처리 중에 스키마 변경 내용이 즉시 평가됩니다. 따라서 성능 적중에 대해 걱정할 필요가 없습니다. 스트림이 다시 시작되면 스키마 위치에서 진화된 스키마를 선택하고 유추 오버헤드 없이 실행을 시작합니다.

자동 로더 스키마 유추를 사용할 때 수집에 미치는 성능 영향은 무엇인가요?

초기 스키마 유추 중에 매우 큰 원본 디렉터리에 대한 스키마 유추에는 몇 분 정도 걸릴 것으로 예상해야 합니다. 그렇지 않으면 스트림 실행 중에 상당한 성능 적중을 관찰해서는 안 됩니다. Azure Databricks Notebook에서 코드를 실행하면 자동 로더에서 데이터 스키마를 샘플링하고 유추하기 위해 디렉터리를 나열할 시기를 지정하는 상태 업데이트를 확인할 수 있습니다.

버그로 인해 잘못된 파일이 내 스키마를 크게 변경했습니다. 스키마 변경을 롤백하려면 어떻게 해야 하나요?

도움이 필요하면 Databricks 지원에 문의하세요.