ファイルタイプ
適用対象: Databricks Runtime 18 LTS 以降
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
FileType は、SQL FILE 型に対応する PySpark 型であり、非構造化ファイルとそのメタデータへの参照です。これを使用して、Python ユーザー定義関数 (UDF) で FILE パラメーターと戻り値の型を宣言します。Python では、FILE 値は FileRef オブジェクトであり、ファイルのメタデータを保持し、そのバイトを読み取ります。
SQL 型のリファレンスと概念の概要については、FILE 型およびFILE 型と非構造化データを参照してください。ファイル処理 UDF の例については、UDF を使用したファイルの処理を参照してください。
FILE タイプは、Serverless ノートブックではサポートされていません。これは、Serverless Databricks SQL warehouse にアタッチされたノートブックでサポートされています。
インポート
from pyspark.sql.types import FileType, FileRef
ファイルタイプ
FileType pyspark.sql.types.DataType のサブクラスです。これを UDF のパラメーターまたは戻り値の型として、あるいはスキーマ内のフィールド型として使用します。
FileType MANAGED または EXTERNAL が指定されていません。これらの修飾子は FILE テーブルカラムにのみ適用されます。このカラムは、参照をマネージドとして保存するか外部として保存するかを決定します。UDF は FILE 参照を渡して返します。ターゲットカラムは、結果をテーブルに書き込む際に各参照をどのように保存するかを決定します。
FileType は以下の方法で使用できます。これは SQL および Scala UDF、ならびに SQL ストアドプロシージャにも適用されます。
- 最上位の型として。
StructTypeまたはArrayTypeの内部に入れ子になっています。MapTypeの値タイプとして使用できますが、MapTypeキーとしては使用できません。VariantType内ですが、外部ファイルの場合に限ります。
クエリーが FILE 列を Python に返す場合(UDF 内、または DataFrame.collect() を介する場合のいずれであっても)、各値は FileRef となります。
FileRef
FileRef は、FILE の Python 値です。これにはファイルのメタデータが保持されており、ファイルのバイトを読み取り、新しい参照を作成するためのメソッドがあります。
属性
属性 | Type | 説明 |
|---|---|---|
|
| ファイルのURI。常に設定します。 |
|
| ファイル内のオフセット(バイト単位)。 |
|
| ファイルのサイズ(バイト単位)。 |
|
| 既知の場合の、ファイルの MIME タイプ。 |
|
|
|
メソッド
手法 | 説明 |
|---|---|
| ファイルへの |
| バイナリ読み取り用にファイルを開き、ファイルオブジェクトを返します。呼び出し元がそれを閉じます。 |
| クラスメソッド。 |
| クラスメソッド。ローカルファイルを Unity Catalog ボリュームに upload し、 |
例
以下のコードでは、スカラー UDF が FILE 値を FileRef として受け取り、画像を開いてその寸法を返します。
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 の詳細な例については、「Process files with UDFs」を参照してください。一般的なUDFの作成については、Pythonユーザー定義スカラー関数 (UDF) および Pythonユーザー定義テーブル関数 (UDTF)を参照してください。
制限事項
PySpark で FileType を使用する場合、以下の制限があります。
- PySpark は、
FILE MANAGEDまたはFILE EXTERNALテーブル列の宣言や、ファイルのバルク取り込みをサポートしていません。これらの操作には SQL を使用してください。PySpark は、UDF およびファイル読み取りにおいて、FileTypeとしてFILEのみをサポートしています。 as_local_file()およびopen()はクラスター側のアクセスを必要とするため、Databricks Connect クライアントでは使用できません。代わりに、UDF 内またはクラスターコンピュート上でそれらを呼び出します。from_bytesおよびfrom_local_fileの場合、Python UDFはパスの拡張子からcontent_typeを推論しますが、Scala UDFはファイルのマジックバイトから推論します。FILE MANAGED列に書き込む UDF からFileRefを返すことはサポートされていません。