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 マウント・ポイントはサポートされていません
DatabricksS3AFileSystem
Databrickss3a://
では、 のs3://
、 、および ファイルシステムスキームのデフォルトである が提供するs3n://
Databricks Runtimeを使用することを強くお勧めします。S3AFileSystem
への移行についてサポートが必要な場合は、Databricks サポートまたは Databricks アカウント チームにお問い合わせください。
使い
- Scala
- SQL
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 | False | 入力の最初の行をスキップするかどうか (潜在的なヘッダーの内容は無視されます) |
コメントをつける | ‘#’ | このパラメーターの値で始まる行は無視されます |
RecordDelimiter | 'n' | ファイル内のレコードを区切る文字 |
Delimiter | ‘,’ | レコード内のフィールドを区切る文字 |
quote | ‘”’ | 予約文字を含む値を引用符で囲むために使用される文字 |
escape | ‘”’ | 引用符で囲まれた文字をエスケープするために使用される文字 |
AllowQuotedRecordDelimiter | False | 値に引用符で囲まれたレコード区切り記号を含めることができるかどうか |
JSON固有のオプション
オプション名 | デフォルト値 | 説明 |
---|---|---|
タイプ | document | 入力のタイプ ('document' または 'lines') |
S3 認証
で利用可能なS3 認証方法(キーとインスタンスプロファイル)を使用できます。Databricks インスタンスプロファイル を使用することをお勧めします。資格情報を提供するには、次の 3 つの方法があります。
-
デフォルトの資格情報プロバイダーチェーン(推奨オプション): AWS 認証情報は、 DefaultAWSCredentialsProviderChain を通じて自動的に取得されます。 インスタンスプロファイルを使用して S3 への認証を行う場合は、この方法を使用する必要があります。 資格情報を提供する他の方法 (方法 2 と 3) は、このデフォルトよりも優先されます。
-
Hadoop conf でキーを設定します。 Hadoop 設定プロパティで AWS キーを指定します。
-
AWS キーを使用して S3 にアクセスする場合は、次の例に示すように、常に設定プロパティ [
fs.s3n.awsAccessKeyId
] と [fs.s3n.awsSecretAccessKey
] を設定します。プロパティfs.s3a.access.key
とfs.s3a.secret.key
はサポートされていません 。 -
s3a://
ファイルシステムを参照するには、Hadoop XML 設定ファイルでfs.s3n.awsAccessKeyId
プロパティとfs.s3n.awsSecretAccessKey
プロパティを設定するか、sc.hadoopConfiguration.set()
を呼び出して Spark のグローバル Hadoop 設定を設定します。Scalasc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "$AccessKey")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "$SecretKey")Pythonsc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", ACCESS_KEY)
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", SECRET_KEY)
- URI のキーをエンコード する: たとえば、URI
s3a://$AccessKey:$SecretKey@bucket/path/to/dir
はキー ペア (AccessKey
、SecretKey
) をエンコードします。