FileType

적용 대상:예 Databricks Runtime 18 LTS 이상으로 표시된 확인

Important

이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. Azure Databricks 미리 보기 관리를 참조하세요.

FileType SQL은 비정형 파일과 그 메타데이터에 대한 참조인 SQL FILE 타입의 PySpark 타입입니다. Python 사용자 정의 함수(UDF)에서 매개변수와 반환 타입을 선언 FILE 하는 데 사용하세요. Python에서 값은 FILE 파일의 메타데이터를 담고 바이트를 읽는 객체입니다FileRef.

SQL 타입 참조 및 개념 개요는 타입 및 FILE 참조하세요. 파일 처리 UDF 예시는 UDF가 포함된 프로세스 파일을 참조하세요.

메모

서버리스 노트북에서는 이 FILE 타입을 지원하지 않습니다. 서버리스 Databricks SQL 웨어하우스에 연결된 노트북에서 지원됩니다.

Import

from pyspark.sql.types import FileType, FileRef

FileType

FileTypepyspark.sql.types.DataType의 하위 클래스입니다. UDF의 매개변수 또는 반환 타입, 또는 스키마 내 필드 타입으로 사용할 수 있습니다.

FileType 또는 를 명시 MANAGEDEXTERNAL하지 않습니다. 이 수식어들은 테이블 열에만 FILE 적용되며, 이 열은 참조가 관리되는지 외부로 저장되는지를 결정합니다. UDF는 참조를 전달하고 반환 FILE 하며, 대상 열은 결과를 테이블에 쓸 때 각 참조가 어떻게 저장될지 결정합니다.

SQL과 Scala UDF와 SQL 저장 프로시저에도 적용되는 다음과 같은 방식으로 사용할 FileType 수 있습니다:

  • 최상위 유형으로서요.
  • a 또는 . StructType안에 중첩되어 ArrayType 있습니다.
  • 의 값 유형 MapType으로, 키로 MapType 서의 유형으로는 아니에요.
  • , 안에 있지만 VariantType외부 파일에만 해당됩니다.

쿼리가 Python에 열을 FILE 반환할 때, UDF 내나 를 통해 DataFrame.collect()각 값은 FileRef.

FileRef

A FileRef 는 Python 값FILE입니다. 파일의 메타데이터를 저장하고 파일의 바이트를 읽거나 새로운 참조를 생성하는 메서드를 제공합니다.

특성

특성 Type Description
uri str 파일의 URI. 항상 준비되어 있어.
offset int 파일 내에서 바이트 단위로 오프셋을 하는 것입니다.
size int 파일의 크기입니다(바이트).
content_type str 파일의 MIME 유형이 알려져 있을 때.
checksum str 파일의 바이트에 대한 무결성 토큰으로, 형태는 <algorithm>:<digest>. 인식된 알고리즘에 대해서는 체크섬을 참조하세요.

메서드

Method Description
as_local_file() a를 파일로 반환 pathlib.Path 합니다. 경로를 수락하는 라이브러리에 결과를 전달합니다. Azure Databricks 컴퓨트(노트북 및 UDF 워커)에서 이용 가능합니다. Databricks Connect 클라이언트, 예를 들어 IDE나 Azure Databricks 컴퓨트 외부에서 코드를 실행하는 로컬 애플리케이션에서는 제공되지 않습니다.
open() 이진 읽기 파일을 열고 파일 객체를 반환합니다. 전화한 사람이 닫는다. 와 동일한 계산 요구 as_local_file()사항을 가집니다.
from_bytes(content, path=None, content_type=None) 수업 방식. Unity 카탈로그 볼륨 경로 contentbytes에 (값path)을 업로드 FileRef 하며, . 목표 경로에 이미 파일이 존재하면 실패합니다. UDF 내에서만 지원됩니다.
from_local_file(local_file, path=None, content_type=None) 수업 방식. Unity 카탈로그 볼륨에 로컬 파일을 업로드하고 FileRef. 와 path 매개변수는 content_type 다음과 같이 from_bytes행동한다. UDF 내에서만 지원됩니다.

예시

다음 코드에서 스칼라 UDF FILEFileRef는 값으로 이미지를 열고 크기를 반환합니다:

from pyspark.sql.functions import col, udf
from pyspark.sql.types import StringType
from PIL import Image

@udf(returnType=StringType())
def image_resolution(file):
    with Image.open(file.as_local_file()) as img:
        return f"{img.width}x{img.height}"

spark.read.table("images").select(image_resolution(col("photo"))).display()

UDTF를 이용한 파일 생성 등 더 많은 파일 처리 UDF 예시는 UDF가 포함된 Process 파일을 참조하세요. 일반적인 UDF 저작에 대해서는 Python 스칼라 사용자 정의 함수(UDFs)Python 사용자 정의 테이블 함수(UDTFs)를 참조하세요.

제한점

PySpark에서 사용할 FileType 때는 다음과 같은 제한이 있습니다:

  • PySpark는 선언 FILE MANAGED 이나 FILE EXTERNAL 테이블 컬럼, 파일 대량 인제스트를 지원하지 않습니다. 그 작업들은 SQL을 사용하세요. PySpark는 UDF와 파일 읽기에서 , 와 FILE만 지원합니다FileType.
  • as_local_file() open() 클러스터 측 접근이 필요하므로 Databricks Connect 클라이언트에서는 이용할 수 없습니다. 대신 UDF나 클러스터 컴퓨트에서 호출하세요.
  • 와 에 대해 from_bytes Python UDF는 경로 확장에서 추론 from_local_file 하는 반면, Scala UDF는 파일의 매직 바이트에서 경로를 추론content_type합니다.
  • 열에 FileRef 글을 쓰는 UDF에서 a FILE MANAGED 를 반환하는 것은 지원되지 않습니다.