Share via


이진 파일

Databricks Runtime은 이진 파일을 읽고 각 파일을 파일의 원시 콘텐츠와 메타데이터를 포함하는 단일 레코드로 변환하는 이진 파일 데이터 원본을 지원합니다. 이진 파일 데이터 원본은 다음 열과 파티션 열이 있는 DataFrame을 생성합니다.

  • path (StringType): 파일의 경로입니다.
  • modificationTime (TimestampType): 파일의 마지막 수정 시간입니다. 일부 Hadoop FileSystem 구현에서는 이 매개 변수를 사용할 수 없으며 값이 기본값으로 설정될 수 있습니다.
  • length (LongType): 파일의 길이(바이트)입니다.
  • content (BinaryType): 파일의 콘텐츠입니다.

이진 파일을 읽으려면 데이터 원본 formatbinaryFile로 지정합니다.

이미지

Databricks는 이진 파일 데이터 원본을 사용하여 이미지 데이터를 로드하는 것을 권장합니다.

Databricks display 함수는 이진 데이터 원본을 사용하여 로드된 이미지 데이터 표시를 지원합니다.

로드된 모든 파일에 이미지 확장명이 있는 파일 이름이 있는 경우 이미지 미리 보기가 자동으로 활성화됩니다.

df = spark.read.format("binaryFile").load("<path-to-image-dir>")
display(df)    # image thumbnails are rendered in the "content" column

image preview

또는 문자열 값 "image/*"이(가) 있는 mimeType 옵션을 사용하여 이진 열에 주석을 추가하여 이미지 미리 보기 기능을 강제 적용할 수 있습니다. 이미지는 이진 콘텐츠의 형식 정보를 기반으로 디코딩됩니다. 지원되는 이미지 유형은 bmp, gif, jpegpng입니다. 지원되지 않는 파일은 손상된 이미지 아이콘으로 표시됩니다.

df = spark.read.format("binaryFile").option("mimeType", "image/*").load("<path-to-dir>")
display(df)    # unsupported files are displayed as a broken image icon

image preview with unsupported file type

이미지 데이터를 처리하기 위한 권장 워크플로는 이미지 애플리케이션용 참조 솔루션을 참조하세요.

옵션

파티션 검색의 동작을 유지하면서 지정된 GLOB 패턴과 일치하는 경로가 있는 파일을 로드하려면 pathGlobFilter 옵션을 사용할 수 있습니다. 다음 코드는 파티션 검색을 사용하여 입력 디렉터리에서 모든 JPG 파일을 읽습니다.

df = spark.read.format("binaryFile").option("pathGlobFilter", "*.jpg").load("<path-to-dir>")

파티션 검색을 무시하고 입력 디렉터리 아래에서 파일을 재귀적으로 검색하려면 recursiveFileLookup 옵션을 사용합니다. 이 옵션은 이름이 파티션 명명 체계(예: date=2019-07-01)를 따르지 않더라도 중첩된 디렉터리를 검색합니다. 다음 코드는 입력 디렉터리에서 모든 JPG 파일을 재귀적으로 읽고 파티션 검색을 무시합니다.

df = spark.read.format("binaryFile") \
  .option("pathGlobFilter", "*.jpg") \
  .option("recursiveFileLookup", "true") \
  .load("<path-to-dir>")

Scala, Java 및 R에 대해 유사한 API가 존재합니다.

참고 항목

데이터를 다시 로드할 때 읽기 성능을 향상시키기 위해 Azure Databricks는 이진 파일에서 로드된 데이터를 저장할 때 압축을 해제할 것을 권장합니다.

spark.conf.set("spark.sql.parquet.compression.codec", "uncompressed")
df.write.format("delta").save("<path-to-table>")