Amazon S3 Select

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

制限事項

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

  • CSV ファイルと JSON ファイル

  • UTF-8 エンコード

  • GZIPまたは圧縮なし

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

  • 複合型 (配列とオブジェクト) は JSON では使用できません

  • スキーマ推論はサポートされていません

  • ファイル分割はサポートされていませんが、複数行レコードはサポートされています

  • DBFS マウント ポイントはサポートされていません

重要

Databricks Runtime 7.0 には、AWS SDK の 1.11.655 へのアップグレードが含まれています。 は、S3 にアクセスするための org.apache.hadoop.fs.s3native.NativeS3FileSystemorg.apache.hadoop.fs.s3.S3FileSystem をサポートしていません。

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

使用方法

sc.read.format("s3select").schema(...).options(...).load("s3://bucket/filename")
CREATE TABLE name (...) USING S3SELECT LOCATION 's3://bucket/filename' [ OPTIONS (...) ]

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

オプション

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

ジェネリックオプション

オプション名

デフォルト値

説明

ファイル形式

'自動'

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

CompressionType

'なし'

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

CSV 固有のオプション

オプション名

デフォルト値

説明

nullValue

''

入力の null 値を表す文字列

header

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

Comment

'#'

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

RecordDelimiter

'n'

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

Delimiter

','

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

quote

'"'

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

escape

'"'

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

AllowQuotedRecordDelimiter

引用符付きレコード区切り文字を値に含めることができるかどうか

JSON 固有のオプション

オプション名

デフォルト値

説明

タイプ

document

入力の種類 ('document' または 'lines')

S3 認証

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

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

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

    重要

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

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

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