Databricks 자동 로더에 대한 일반적인 질문입니다.
파일이 추가되거나 덮어쓰여질 때 자동 로더가 파일을 다시 처리하나요?
기본 설정(cloudFiles.allowOverwrites
= false
)을 사용하면 파일이 정확히 한 번 처리됩니다. 파일을 추가하거나 덮어쓰는 경우 자동 로더는 처리될 파일 버전을 보장할 수 없습니다.
자동 로더가 파일을 추가하거나 덮어쓸 때 다시 처리할 수 있도록 하려면 cloudFiles.allowOverwrites
을 true
로 설정하십시오. 이 경우 자동 로더는 최신 버전의 파일을 처리하도록 보장됩니다. 그러나 자동 로더는 처리되는 중간 버전을 보장할 수 없습니다.
파일 알림 모드에서 사용하도록 설정하는 cloudFiles.allowOverwrites
경우 주의해야 합니다. 파일 알림 모드에서 자동 로더는 파일 알림 및 디렉터리 목록을 통해 새 파일을 식별할 수 있습니다. 파일 알림 이벤트 시간과 파일 수정 시간이 다를 수 있으므로 자동 로더는 두 개의 서로 다른 타임스탬프를 수신하고 파일이 업데이트되지 않은 경우에도 동일한 파일을 두 번 수집할 수 있습니다.
cloudFiles.allowOverwrites
사용하도록 설정하면 중복 레코드를 직접 처리해야 합니다. 자동 로더는 추가되거나 부분적으로 업데이트된 경우에도 전체 파일을 다시 처리합니다. 일반적으로 Azure Databricks는 자동 로더를 사용하여 변경할 수 없는 파일만 수집하고 기본 설정을 cloudFiles.allowOverwrites
= false
사용하는 것이 좋습니다. 추가 질문이 있는 경우 Azure Databricks 계정 팀에 문의하세요.
내 데이터 파일이 지속적으로 도착하지 않고 규칙적인 간격(예: 하루에 한 번)으로 이 원본을 사용해야 하는 경우 어떤 이점이 있나요?
이 경우 예상 파일 도착 시간 이후에 실행되도록 Trigger.AvailableNow
(Databricks Runtime 10.4 LTS 이상에서 사용 가능) 구조적 스트리밍 작업 및 일정을 설정할 수 있습니다. 자동 로더는 자주 업데이트되지 않거나 자주 업데이트되는 경우 모두 잘 작동합니다. 최종 업데이트가 매우 크더라도 자동 로더는 입력 크기에 맞게 확장됩니다. 자동 로더의 효율적인 파일 검색 기술 및 스키마 진화 기능을 통해 자동 로더는 증분 데이터 수집에 권장되는 방법입니다.
스트림을 다시 시작할 때 검사점 위치를 변경하면 어떻게 되나요?
검사점 위치는 스트림의 중요한 식별 정보를 유지합니다. 검사점 위치를 효과적으로 변경한다는 것은 이전 스트림을 중단하고 새 스트림을 시작했음을 의미합니다.
이벤트 Notification Services를 미리 만들어야 하나요?
아니요. 파일 알림 모드를 선택하고 필요한 권한을 제공하면 자동 로더가 파일 Notification Services를 만들 수 있습니다. 각 자동 로더 스트림에 대한 파일 알림 큐 관리를 별도로 참조하세요(레거시).
Unity 카탈로그의 외부 위치에서 파일 이벤트를 사용하는 경우 파일 이벤트 서비스는 클라우드 공급자에서 파일 이벤트를 만들 수 있으며 각 스트림에 대해 파일 이벤트를 만들도록 자동 로더를 구성할 필요가 없습니다. 파일 이벤트와 함께 파일 알림 모드 사용 참조
자동 로더에서 만든 이벤트 알림 리소스를 어떻게 정리하나요?
클라우드 리소스 관리자 사용하여 리소스를 나열하고 분해할 수 있습니다. 클라우드 공급자의 UI 또는 API를 사용하여 이러한 리소스를 수동으로 삭제할 수도 있습니다.
동일한 버킷/컨테이너의 다른 입력 디렉터리에서 여러 스트리밍 쿼리를 실행할 수 있나요?
예, 부모-자식 디렉터리가 아닌 한 가능합니다. 예를 들어, prod-logs/
는 prod-logs/usage/
의 자식 디렉터리이기 때문에 /usage
및 /prod-logs
는 작동하지 않습니다.
내 버킷 또는 컨테이너에 기존 파일 알림이 있는 경우 이 기능을 사용할 수 있나요?
예, 입력 디렉터리가 기존 알림 접두어(예: 위의 부모-자식 디렉터리)와 충돌하지 않는 한 가능합니다.
자동 로더는 스키마를 어떻게 유추하나요?
DataFrame이 처음 정의되면 자동 로더는 원본 디렉터리를 나열하고 가장 최근(파일 수정 시간 기준) 50GB의 데이터 또는 1000개의 파일을 선택하고 이를 사용하여 데이터 스키마를 유추합니다.
또한 자동 로더는 원본 디렉터리 구조를 검사하여 파티션 열을 유추하고 /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
를 사용하여 디렉터리 구조에서 열을 명시적으로 해석합니다.
원본 폴더가 비어 있을 때 자동 로더는 어떻게 작동하나요?
원본 디렉터리가 비어 있으면 유추를 수행할 데이터가 없으므로 자동 로더에서 스키마를 제공해야 합니다.
자동 로더는 언제 스키마를 유추하나요? 모든 마이크로 일괄 처리 후에 자동으로 진화하나요?
스키마는 데이터 프레임이 코드에 처음 정의될 때 유추됩니다. 각 마이크로 배치 처리 중에 스키마 변경 내용은 즉석에서 평가됩니다. 따라서 성능 저하에 대해 걱정할 필요가 없습니다. 스트림이 다시 시작되면 스키마 위치에서 진화된 스키마를 가져오고 유추에서 오버헤드 없이 실행을 시작합니다.
자동 로더 스키마 유추를 사용할 때 데이터 수집에 미치는 성능 영향은 무엇인가요?
초기 스키마 유추 중에 매우 큰 원본 디렉터리에 대해 스키마 유추가 몇 분 정도 걸릴 것으로 예상해야 합니다. 스트림 실행 중 성능 저하를 관찰해서는 안 됩니다. Azure Databricks Notebook에서 코드를 실행하는 경우 자동 로더가 데이터 스키마 샘플링 및 유추를 위해 디렉터리를 나열할 시기를 지정하는 상태 업데이트를 볼 수 있습니다.
버그로 인해 잘못된 파일이 내 스키마를 크게 변경했습니다. 스키마 변경 내용을 롤백하려면 어떻게 해야 하나요?
도움이 필요하면 Databricks 지원에 문의하세요.