メインコンテンツまでスキップ

Amazon S3 セレクト

Amazon S3 Select では、オブジェクトから必要なデータのみを取得できます。 DatabricksS3SelectApache Spark コネクタは、S3 Select を活用する データソースを提供します。S3 Select データソースを使用すると、DataFrame のフィルタと列の選択がプッシュダウンされ、S3 データ帯域幅が節約されます。

制限

Amazon S3 Select は、次のファイル形式をサポートしています。

  • CSV ファイルと JSON ファイル
  • UTF-8 エンコーディング
  • GZIPまたは圧縮なし

Databricks S3 Select コネクタには、次の制限があります。

  • 複合型 (配列とオブジェクト) は JSON では使用できません
  • スキーマ推論はサポートされていません
  • ファイル分割はサポートされていませんが、複数行レコードはサポートされています
  • DBFS マウント・ポイントはサポートされていません
important

DatabricksS3AFileSystemDatabrickss3a://では、 のs3:// 、 、および ファイルシステムスキームのデフォルトである が提供するs3n:// Databricks Runtimeを使用することを強くお勧めします。S3AFileSystemへの移行についてサポートが必要な場合は、Databricks サポートまたは Databricks アカウント チームにお問い合わせください。

使い

Scala
sc.read.format("s3select").schema(...).options(...).load("s3://bucket/filename")

ファイル名の拡張子が .csv または .jsonの場合、形式は自動的に検出されます。それ以外の場合は、 FileFormat オプションを指定する必要があります。

オプション

このセクションでは、すべてのファイルタイプのオプションと、CSV と JSON に固有のオプションについて説明します。

汎用オプション

オプション名

デフォルト値

説明

ファイル形式

'自動'

入力ファイルの種類 ('auto'、'csv'、または 'JSON')

CompressionType

「なし」

入力ファイルで使用される圧縮コーデック ('none' または 'gzip')

CSV 固有のオプション

オプション名

デフォルト値

説明

nullValue

‘’

入力の null 値を表す文字列

header

False

入力の最初の行をスキップするかどうか (潜在的なヘッダーの内容は無視されます)

コメントをつける

‘#’

このパラメーターの値で始まる行は無視されます

RecordDelimiter

'n'

ファイル内のレコードを区切る文字

Delimiter

‘,’

レコード内のフィールドを区切る文字

quote

‘”’

予約文字を含む値を引用符で囲むために使用される文字

escape

‘”’

引用符で囲まれた文字をエスケープするために使用される文字

AllowQuotedRecordDelimiter

False

値に引用符で囲まれたレコード区切り記号を含めることができるかどうか

JSON固有のオプション

オプション名

デフォルト値

説明

タイプ

document

入力のタイプ ('document' または 'lines')

S3 認証

で利用可能なS3 認証方法(キーとインスタンスプロファイル)を使用できます。Databricks インスタンスプロファイル を使用することをお勧めします。資格情報を提供するには、次の 3 つの方法があります。

  1. デフォルトの資格情報プロバイダーチェーン(推奨オプション): AWS 認証情報は、 DefaultAWSCredentialsProviderChain を通じて自動的に取得されます。 インスタンスプロファイルを使用して S3 への認証を行う場合は、この方法を使用する必要があります。 資格情報を提供する他の方法 (方法 2 と 3) は、このデフォルトよりも優先されます。

  2. Hadoop conf でキーを設定します。 Hadoop 設定プロパティで AWS キーを指定します。

important
  • AWS キーを使用して S3 にアクセスする場合は、次の例に示すように、常に設定プロパティ [ fs.s3n.awsAccessKeyId ] と [ fs.s3n.awsSecretAccessKey ] を設定します。プロパティ fs.s3a.access.keyfs.s3a.secret.key はサポートされていません

  • s3a:// ファイルシステムを参照するには、Hadoop XML 設定ファイルで fs.s3n.awsAccessKeyId プロパティと fs.s3n.awsSecretAccessKey プロパティを設定するか、sc.hadoopConfiguration.set() を呼び出して Spark のグローバル Hadoop 設定を設定します。

    Scala
    sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "$AccessKey")
    sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "$SecretKey")
    Python
    sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", ACCESS_KEY)
    sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", SECRET_KEY)
  1. URI のキーをエンコード する: たとえば、URI s3a://$AccessKey:$SecretKey@bucket/path/to/dir はキー ペア (AccessKeySecretKey) をエンコードします。