Amazon S3選擇

Amazon S3選擇允許隻從對象中檢索所需的數據。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.655org.apache.hadoop.fs.s3native.NativeS3FileSystem而且org.apache.hadoop.fs.s3.S3FileSystem訪問S3。

數據庫強烈建議您使用S3AFileSystem由Databricks提供,這是的默認值s3a: / /s3: / /,s3n: / /在Databricks運行時中的文件係統方案。如果您需要協助遷移到S3AFileSystem,請聯係Databricks支持人員或您的Databricks代表。

使用

sc格式“s3select”).模式(…)。選項(…)。負載“s3: / /桶/文件名”
創建表格的名字(…)使用S3SELECT位置“s3: / /桶/文件名”選項(…)

如果文件名擴展名是. csv. json,格式自動檢測;否則,您必須提供FileFormat選擇。

選項

本節描述了所有文件類型的選項以及特定於CSV和JSON的選項。

通用選項

選項名稱

默認值

描述

FileFormat

“汽車”

輸入文件類型(' auto ', ' csv ',或' json ')

CompressionType

“沒有”

輸入文件使用的壓縮編解碼器(' none '或' gzip ')

CSV特定選項

選項名稱

默認值

描述

NullValue

''

在輸入中表示空值的字符串

是否跳過輸入的第一行(潛在的頭內容被忽略)

評論

“#”

以該參數值開頭的行將被忽略

RecordDelimiter

“n”

文件中分隔記錄的字符

分隔符

”、“

記錄內分隔字段的字符

報價

“””

用於引用包含保留字符的值的字符

逃避

“””

用於轉義的字符

AllowQuotedRecordDelimiter

值是否可以包含帶引號的記錄分隔符

JSON特定選項

選項名稱

默認值

描述

類型

文檔

輸入類型('文檔'或'行')

S3身份驗證

您可以使用Databricks中提供的S3身份驗證方法(密鑰和實例配置文件);我們建議您使用實例配置文件.提供憑證有三種方式:

  1. 默認憑據提供程序鏈(推薦選項):方法自動檢索AWS憑據DefaultAWSCredentialsProviderChain.如果您使用實例概要文件對S3進行身份驗證,那麼您應該使用此方法。提供憑據的其他方法(方法2和方法3)優先於此默認值。

  2. 在Hadoop conf中設置鍵:指定AWS密鑰Hadoop配置屬性

    重要的

    • 當使用AWS密鑰訪問S3時,始終設置配置屬性fs.s3n.awsAccessKeyId而且fs.s3n.awsSecretAccessKey如下例所示;的屬性fs.s3a.access.key而且fs.s3a.secret.key不支持

    • 引用s3a: / /文件係統,設置fs.s3n.awsAccessKeyId而且fs.s3n.awsSecretAccessKey屬性在Hadoop XML配置文件或調用sc.hadoopConfiguration.set ()設置Spark的全局Hadoop配置。

      schadoopConfiguration“fs.s3n.awsAccessKeyId”“AccessKey美元”schadoopConfiguration“fs.s3n.awsSecretAccessKey”“SecretKey美元”
      sc_jschadoopConfiguration()“fs.s3n.awsAccessKeyId”ACCESS_KEYsc_jschadoopConfiguration()“fs.s3n.awsSecretAccessKey”SECRET_KEY
  3. 在URI中編碼鍵:例如,URIAccessKey:美元s3a: / / SecretKey@bucket /路徑/ / dir編碼密鑰對(AccessKeySecretKey).