使用 Apache 星火的資料來源連接器 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Apache 星火的資料來源連接器

某些 Athena 資料來源連接器可作為 Spark DSV2 連接器使用。Spark DSV2 連接器名稱具有-dsv2字尾 (例如,athena-dynamodb-dsv2)。

以下是目前可用的DSV2連接器、其 Spark .format() 類別名稱,以及對應的 Amazon Athena 聯合查詢文件的連結:

DSV2連接器 Spark .format() 類別名稱 文件
athena-cloudwatch-dsv2 com.amazonaws.athena.connectors.dsv2.cloudwatch.CloudwatchTableProvider CloudWatch
athena-cloudwatch-metrics-dsv2 com.amazonaws.athena.connectors.dsv2.cloudwatch.metrics.CloudwatchMetricsTableProvider CloudWatch 度量
athena-aws-cmdb-dsv2 com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider CMDB
athena-dynamodb-dsv2 com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider DynamoDB

若要下載DSV2連接器的.jar檔案,請瀏覽 Amazon Athena 查詢聯盟DSV2 GitHub 頁面,並查看版本、發行 <version>資產部分。

指定罐子火花

若要搭配 Spark 使用 Athena DSV2 連接器,請將連接器的.jar檔案提交至您正在使用的 Spark 環境。下列各節說明了特定情況。

Athena for Spark

如需有關新增自訂 .jar 檔案和自訂組態至 Amazon Athena for Apache Spark 的資訊,請參閱 使用星火屬性來指定自定義配置

General Spark

若要將連接器 .jar 檔案傳遞給 Spark,請使用 spark-submit 命令並在 --jars 選項中指定 .jar 檔案,如下列範例所示:

spark-submit \ --deploy-mode cluster \ --jars https://github.com/awslabs/aws-athena-query-federation-dsv2/releases/download/some_version/athena-dynamodb-dsv2-some_version.jar

Amazon EMR 星火

為了在 Amazon 上運行帶有--jars參數的spark-submit命令EMR,您必須向 Amazon EMR Spark 集群添加一個步驟。有關如何在 Amazon spark-submit 上使用的詳細信息EMR,請參閱 Amazon EMR 發布指南中的添加 Spark 步驟

AWS Glue ETL火花

對於 AWS Glue ETL,您可以URL將.jar檔案的 GitHub .com 傳遞給aws glue start-job-run命令的--extra-jars引數。該 AWS Glue 文件將--extra-jars參數描述為採用 Amazon S3 路徑,但參數也可以採用 HTTPSURL. 如需詳細資訊,請參閱《AWS Glue 開發人員指南》中的任務參數參考

查詢星火上的連接器

若要在 Apache Spark 上提交您現有的 Athena 聯合查詢的等式,請使用 spark.sql() 函數。例如,假設您想要在 Apache Spark 上使用如下所示的 Athena 查詢。

SELECT somecola, somecolb, somecolc FROM ddb_datasource.some_schema_or_glue_database.some_ddb_or_glue_table WHERE somecola > 1

若要使用 Amazon Athena DynamoDB DSV2 連接器在 Spark 上執行相同的查詢,請使用下列程式碼:

dynamoDf = (spark.read .option("athena.connectors.schema", "some_schema_or_glue_database") .option("athena.connectors.table", "some_ddb_or_glue_table") .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") .load()) dynamoDf.createOrReplaceTempView("ddb_spark_table") spark.sql(''' SELECT somecola, somecolb, somecolc FROM ddb_spark_table WHERE somecola > 1 ''')

指定參數

Athena 資料來源連接器的DSV2版本使用與對應的 Athena 資料來源連接器相同的參數。如需參數資訊,請參閱對應 Athena 資料來源連接器的文件。

在您的 PySpark 程式碼中,使用下列語法來設定參數。

spark.read.option("athena.connectors.conf.parameter", "value")

例如,下列程式碼會將 Amazon Athena DynamoDB 連接器 disable_projection_and_casing 參數設定為 always

dynamoDf = (spark.read .option("athena.connectors.schema", "some_schema_or_glue_database") .option("athena.connectors.table", "some_ddb_or_glue_table") .option("athena.connectors.conf.disable_projection_and_casing", "always") .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") .load())