バイナリファイル
Databricks Runtime は、 バイナリファイルを読み込み、それぞれのファイルを生のコンテンツとファイルのメタデータを含む単一のレコードに変換するバイナリ ファイルデータソースをサポートしています。バイナリファイル・データソースは、次のカラムと場合によってはパーティション・カラムを含む データフレーム を生成します。
- 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>")
Scala、Java 、およびRにも同様の APIが存在します。
データを読み込み直すときの読み取りパフォーマンスを向上させるために、Databricks では、Delta テーブルを使用してバイナリ ファイルから読み込まれたデータを保存することをお勧めします。
df.write.save("<path-to-table>")