バイナリファイル
Databricks Runtime は、バイナリ ファイルを 読み込み、各ファイルを 1 つのファイルに変換する binary file データソースをサポートしています ファイルの未加工のコンテンツとメタデータを含むレコード。 バイナリ・ファイル・データソースは、次のカラムと場合によってはパーティション・カラムを含む DataFrame を生成します。
path (StringType)
: ファイルのパス。modificationTime (TimestampType)
: ファイルの変更時刻。一部の Hadoop FileSystem 実装では、このパラメーターが使用できず、値がデフォルト値に設定される場合があります。length (LongType)
: ファイルの長さ (バイト単位)。content (BinaryType)
: ファイルの内容。
バイナリファイルを読み取るには、データソース format
を binaryFile
として指定します。
画像
Databricks では、バイナリ ファイル データソース を使用してイメージ データをロードすることをお勧めします。
Databricks display
関数は、バイナリデータソースを使用してロードされた画像データの表示をサポートしています。
読み込まれたすべてのファイルのファイル名に 画像拡張子が付いている場合、画像のプレビューは自動的に有効になります。
df = spark.read.format("binaryFile").load("<path-to-image-dir>")
display(df) # image thumbnails are rendered in the "content" column
または、文字列値 "image/*"
で mimeType
オプションを使用してバイナリ列に注釈を付けることで、イメージ プレビュー機能を強制することもできます。画像は、バイナリ コンテンツ内の形式情報に基づいてデコードされます。 サポートされているイメージ タイプは、 bmp
、 gif
、 jpeg
、および png
です。 サポートされていないファイルは、壊れた画像アイコンとして表示されます。
df = spark.read.format("binaryFile").option("mimeType", "image/*").load("<path-to-dir>")
display(df) # unsupported files are displayed as a broken image icon
画像データの処理に推奨されるワークフローについては、 画像アプリケーションのリファレンス ソリューション を参照してください。
オプション
パーティション検出の動作を維持しながら、特定の 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>")
APIsScala、Java 、およびRにも同様の が存在します。
データを読み込み直すときの読み取りパフォーマンスを向上させるために、Databricks では、Delta テーブルを使用してバイナリ ファイルから読み込まれたデータを保存することをお勧めします。
df.write.save("<path-to-table>")