

# DynamicFrameReader 类
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader"></a>

##  – 方法 –
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-_methods"></a>
+ [\_\_init\_\_](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-__init__)
+ [from\_rdd](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_rdd)
+ [from\_options](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_options)
+ [from\_catalog](#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_catalog)

## \_\_init\_\_
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-__init__"></a>

**`__init__(glue_context)`**
+ `glue_context` – 要使用的 [GlueContext 类](aws-glue-api-crawler-pyspark-extensions-glue-context.md)。

## from\_rdd
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_rdd"></a>

**`from_rdd(data, name, schema=None, sampleRatio=None)`**

从弹性分布式数据集 (RDD) 读取 `DynamicFrame`。
+ `data` – 要从中读取的数据集。
+ `name` – 要从中读取的名称。
+ `schema` – 要读取的架构 (可选)。
+ `sampleRatio` – 采样率 (可选)。

## from\_options
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_options"></a>

**`from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx="")`**

使用指定的连接和格式读取 `DynamicFrame`。
+ `connection_type` – 连接类型。有效值包括 `s3`、`mysql`、`postgresql`、`redshift`、`sqlserver`、`oracle`、`dynamodb` 和 `snowflake`。
+ `connection_options` – 连接选项，例如路径和数据库表 (可选)。有关更多信息，请参阅 [AmazonGlue for Spark 中的 ETL 的连接类型和选项](https://docs.amazonaws.cn/glue/latest/dg/aws-glue-programming-etl-connect.html)。对于 `connection_type` 的 `s3`，Amazon S3 路径在数组中定义。

  ```
  connection_options = {"paths": [ "{{s3://amzn-s3-demo-bucket/object_a}}", "{{s3://amzn-s3-demo-bucket/object_b}}"]}
  ```

  对于 JDBC 连接，必须定义多个属性。请注意，数据库名称必须是 URL 的一部分。它可以选择性地包含在连接选项中。
**警告**  
不建议在脚本中存储密码。请考虑使用 `boto3` 从 Amazon Secrets Manager 或 Amazon Glue Data Catalog 检索它们。

  ```
  connection_options = {"url": "{{jdbc-url/database}}", "user": "{{username}}", "password": {{passwordVariable}},"dbtable": "{{table-name}}", "redshiftTmpDir": "{{s3-tempdir-path}}"} 
  ```

  对于执行并行读取的 JDBC 连接，您可以设置 hashfield 选项。例如：

  ```
  connection_options = {"url": "{{jdbc-url/database}}", "user": "{{username}}", "password": {{passwordVariable}},"dbtable": "{{table-name}}", "redshiftTmpDir": "{{s3-tempdir-path}}" , "hashfield": "{{month}}"} 
  ```

  有关更多信息，请参阅 [从 JDBC 表并行读取](run-jdbc-parallel-read-job.md)。
+ `format` – 格式规范（可选）。这用于 Amazon Simple Storage Service（Amazon S3）或支持多种格式的 Amazon Glue 连接。有关支持的格式，请参阅 [Amazon Glue for Spark 中的输入和输出的数据格式选项](aws-glue-programming-etl-format.md)。
+ `format_options` – 指定格式的格式选项。有关支持的格式，请参阅 [Amazon Glue for Spark 中的输入和输出的数据格式选项](aws-glue-programming-etl-format.md)。
+ `transformation_ctx` – 要使用的转换上下文 (可选)。
+ `push_down_predicate` – 筛选分区，而不必列出并读取数据集中的所有文件。有关更多信息，请参阅[使用下推谓词进行预筛选](https://docs.amazonaws.cn/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-pushdowns)。

## from\_catalog
<a name="aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader-from_catalog"></a>

**`from_catalog(database, table_name, redshift_tmp_dir="", transformation_ctx="", push_down_predicate="", additional_options={})`**

使用指定的目录命名空间和表名称读取 `DynamicFrame`。
+ `database` – 要从中读取的数据库。
+ `table_name` – 要从中读取的表的名称。
+ `redshift_tmp_dir` – 要使用的 Amazon Redshift 临时目录（如果不从 Redshift 中读取数据，则此项是可选的）。
+ `transformation_ctx` – 要使用的转换上下文 (可选)。
+ `push_down_predicate` – 筛选分区，而不必列出并读取数据集中的所有文件。有关更多信息，请参阅 [使用下推谓词进行预筛选](aws-glue-programming-etl-partitions.md#aws-glue-programming-etl-partitions-pushdowns)。
+ `additional_options` 提供给 Amazon Glue 的额外选项。
  + 要使用执行并行读取的 JDBC 连接，您可以设置 `hashfield`、`hashexpression` 或 `hashpartitions` 选项。例如：

    ```
    additional_options = {"hashfield": "{{month}}"} 
    ```

    有关更多信息，请参阅 [从 JDBC 表并行读取](run-jdbc-parallel-read-job.md)。
  + 要传递目录表达式以根据索引列进行筛选，您可以查看 `catalogPartitionPredicate` 选项。

    `catalogPartitionPredicate` – 要传递目录表达式以根据索引列进行筛选。这样会将筛选下推到服务器端。有关更多信息，请参阅 [Amazon Glue 分区数据](https://docs.amazonaws.cn/glue/latest/dg/partition-indexes.html)。请注意，`push_down_predicate` 和 `catalogPartitionPredicate` 使用不同的语法。前者使用 Spark SQL 标准语法，后者使用 JSQL 解析器。

    有关更多信息，请参阅 [管理 Amazon Glue 中用于 ETL 输出的分区](aws-glue-programming-etl-partitions.md)。