Amazon Athena 常见问题

来源:互联网 发布:樱井知香作品封面番号 编辑:程序博客网 时间:2024/05/22 00:49

一般性问题

  • 问:什么是 Amazon Athena?

    • Amazon Athena 是一种交互式查询服务,可使用此服务通过标准 SQL 在 Amazon S3 中轻松分析数据。Athena 是无服务器服务,因此您无需设置或管理基础设施,可以立即开始分析数据。您甚至无需将数据加载到 Athena 中,因为它可以直接处理 S3 中存储的数据。要开始使用,您只需登录到 Athena 管理控制台、定义架构并开始查询。Amazon Athena 使用 Presto 并为标准 SQL 提供了完整的支持,可处理 CSV、JSON、ORC、Apache Parquet 和 Avro 等各种标准数据格式。Amazon Athena 不仅是快速、临时查询的理想选择,可与 Amazon QuickSight 集成轻松实现可视化,而且还能处理复杂的分析,包括大型联接、窗口函数和数组。
  • 问:Amazon Athena 可以用来做什么?

    • Amazon Athena 可帮助您分析存储在 Amazon S3 中的数据。您可以使用 ANSI SQL 通过 Athena 运行临时查询,而无需将数据聚合或加载到 Athena 中。Amazon Athena 能够处理非结构化、半结构化和结构化的数据集。示例包括 CSV、JSON、Avro 或列式数据格式,如 Apache Parquet 和 Apache ORC。Amazon Athena 可与 Amazon QuickSight 集成并轻松地实现可视化。此外,您还可以使用 Amazon Athena 生成报表,或借助商业智能工具或 SQL 客户端浏览数据 (通过 JDBC 驱动程序进行连接)。
  • 问:如何开始使用 Amazon Athena?

    • 要开始使用 Amazon Athena,您只需登录到 Athena 的 AWS 管理控制台,然后通过在控制台中编写 DDL 语句或使用创建表向导来创建架构。然后,您可以使用内置的查询编辑器开始查询数据。Athena 直接从 Amazon S3 查询数据,因此无需加载数据。
  • 问:如何访问 Amazon Athena?

    • 可以通过 AWS 管理控制台和 JDBC 驱动程序访问 Amazon Athena。您可以使用 JDBC 驱动程序以编程方式运行查询、添加表或分区。
  • 问:Amazon Athena 采用了何种基础技术?

    • Amazon Athena 使用 Presto 并为标准 SQL 提供了完整的支持,可处理 CSV、JSON、ORC、Avro 和 Parquet 等各种标准数据格式。Athena 能够处理复杂的分析,包括大型联接、窗口函数和数组。Amazon Athena 使用 Amazon S3 作为基础数据存储,因此具有高可用性和持久性 (数据冗余地存储在多个设施和每个设施中的多个设备上)。
  • 问:Amazon Athena 如何存储表定义和架构?

    • Amazon Athena 使用内部数据目录存储有关您为在 Amazon S3 中存储的数据创建的数据库和表的信息及架构。您可以使用 DDL 语句或通过 AWS 管理控制台修改目录。您定义的任何架构都会自动保存,除非显式将其删除。Athena 使用基于读取的架构技术,这意味着表定义在执行查询时应用于您存储在 S3 中的数据。无需加载或转换数据。您可以删除表定义和架构,这不会影响到存储在 Amazon S3 上的基础数据。

何时该使用 Athena,何时该使用其他大数据服务

  • 问:Amazon Athena、Amazon EMR 和 Amazon Redshift 之间有何差异?

    • 查询服务 (如 Amazon Athena)、数据仓库 (如 Amazon Redshift) 和复杂的数据处理框架 (如 Amazon EMR) 都可以满足不同的需求和使用案例。您只需要为任务挑选适当的工具。Amazon Redshift 为企业报告和商业智能工作负载提供最快的查询性能,这一点在涉及具有多个联接和子查询的极为复杂的 SQL 查询上尤为明显。与本地部署相比,Amazon EMR 使运行高度分布式的处理框架 (如 Hadoop、Spark 和 Presto) 变得简单且经济高效Amazon EMR 非常灵活 – 您可以运行自定义的应用程序和代码,定义特定的计算、内存、存储和应用程序参数,以优化您的分析需求Amazon Athena 为针对 S3 中的数据运行临时查询提供了最简单的方法,您不必设置或管理任何服务器
  • 问:什么时候该使用 Amazon Redshift 这样功能全面的企业数据仓库?什么时候该使用 Amazon Athena 这样的查询服务呢?

    • 当您需要将许多不同来源 (如库存系统、财务系统和零售系统) 的数据汇总成一种通用格式并长期存储时,或者需要从历史数据生成复杂的业务报告时,像 Amazon Redshift 这样的数据仓库是您最好的选择。

    • 数据仓库从公司的各个位置收集数据,并充当生成和分析报告的“单一信息源”。数据仓库从不同来源提取数据、格式化并组织数据、存储数据,同时支持生成业务报告的复杂、高速查询。Amazon Redshift 中的查询引擎经过优化,在“需要运行联接大量非常大的数据库表的复杂查询”使用案例中执行得非常好。TPC-DS 是旨在复制此使用案例的标准基准,与针对非结构化数据进行优化的查询服务相比,Redshift 将此类查询的运行速度提高了 20 倍。当需要针对高度结构化的数据运行查询并需要在许多大型表之间进行大量联接时,您应选择 Amazon Redshift。

    • 相比之下,Amazon Athena 这样的查询服务可以直接对 Amazon S3 中的数据运行交互式查询,您不必操心格式化数据或管理基础设施之类的繁琐细节。例如,如果只需要对某些网络日志运行快速查询以诊断站点上的性能问题,则 Athena 就是一种很好的选择。通过查询服务,您可以迅速开始工作。您只需为数据定义一个表,即可使用标准 SQL 开始查询。

    • 此外,您还可以将两项服务配合使用。如果您在将数据加载到 Amazon Redshift 之前将其暂存在 Amazon S3 上,则也可以将这些数据注册到 Amazon Athena 并通过其进行查询。

  • 问:什么时候应该使用 Amazon EMR,而不是使用 Amazon Athena?

    • Amazon EMR 的功能远不止于运行 SQL 查询。借助 EMR,您可以为机器学习、图形分析、数据转换、流式处理数据以及您可以编写代码的几乎任何应用运行各种横向扩展的数据处理任务。如果需要使用自定义代码通过最新的大数据处理框架 (如 Spark、Hadoop、Presto 或 Hbase) 来处理和分析超大数据集,则应该使用 Amazon EMR。通过 Amazon EMR,您可以全面掌控群集及其上安装的软件的配置。
    • 如果需要对 Amazon S3 上的数据运行临时的交互式 SQL 查询,又不想管理任何基础设施或群集,则应该使用 Amazon Athena。
  • 问:可以使用 Amazon Athena 查询使用 Amazon EMR 处理的数据吗?

    • 可以。Amazon Athena 支持许多与 Amazon EMR 相同的数据格式。Athena 的数据目录兼容 Hive 元存储。如果您正在使用 EMR 并且已有 Hive 元存储,则只需在 Amazon Athena 上执行 DDL 语句,即可开始查询数据,这不会对您的 Amazon EMR 任务产生任何影响。

创建表、数据格式和分区

  • 问:如何在 Amazon S3 上为我的数据创建表和架构?

    • Amazon Athena 使用 Apache Hive DDL 定义表。您可以使用 Athena 控制台、通过 JDBC 驱动程序或使用 Athena 创建表向导来运行 DDL 语句。在 Amazon Athena 中创建新的表架构时,架构存储在数据目录中,并在执行查询时使用,但不会修改您存储在 S3 中的数据。
      Athena 采用称作“基于读取的架构”的方法,它在您执行查询时将架构投影到数据。这样就无需加载或转换任何数据。了解有关创建表的更多信息。
  • 问:Amazon Athena 支持哪些数据格式?

    • Amazon Athena 支持许多类型的数据格式,如 CSV、TSV、JSON、Textfiles 等;此外,它还支持开源列格式,如 Apache ORC 和 Apache Parquet。Athena 还支持 Snappy、Zlib、LZO 和 GZIP 格式的压缩数据。通过压缩、分区和使用列格式,您可以提高性能并降低成本。
  • 问:Amazon Athena 支持哪些数据类型?

    • Amazon Athena 支持简单数据类型 (如 INTEGER、DOUBLE、VARCHAR) 及复杂数据类型 (如 MAPS、ARRAY、STRUCT)。
  • 问:可以在 Athena 上运行任何 Hive 查询吗?

    • Amazon Athena 只将 Hive 用于 DDL (数据定义语言) 以及创建/修改和删除表和/或分区。请单击此处查看受支持语句的完整列表。在 Amazon S3 上运行 SQL 查询时,Athena 使用 Presto。您可以运行符合 ANSI 标准的 SQL SELECT 语句来查询 Amazon S3 中的数据。
  • 问:什么是 SerDe?

    • SerDe 表示串行器/解串器 (Serializer/Deserializer),它们是告诉 Hive 如何解释数据格式的库。Hive DLL 语句要求您指定 SerDe,以便系统知道如何解释您指向的数据。Amazon Athena 使用 SerDes 解释从 Amazon S3 读取的数据。SerDes 在 Athena 中的概念与在 Hive 中使用的概念相同。Amazon Athena 支持以下 SerDes:
Apache Web 日志:“org.apache.hadoop.hive.serde2.RegexSerDe”CSV:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”TSV:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”自定义分隔符:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”Parquet:“org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe”Orc:“org.apache.hadoop.hive.ql.io.orc.OrcSerde”JSON:“org.apache.hive.hcatalog.data.JsonSerDe”或“org.openx.data.jsonserde.JsonSerDe
  • 问:我使用 Spark/Hive 创建了 Parquet/ORC 文件。我可以通过 Athena 查询它们吗?

    • 可以。您可以在 Athena 中读取通过 Spark 创建的 Parquet 和 ORC 文件。
  • 问:我的数据来自 Kinesis Firehose。如何使用 Athena 查询?

    • 如果您的 Kinesis Firehose 数据存储在 Amazon S3 中,您可以使用 Amazon Athena 进行查询。只需在 Athena 中为您的数据创建架构并开始查询。建议您将数据组织到分区中,以优化性能。您可以使用 ALTER TABLE DDL 语句添加 Kinesis Firehose 创建的分区。了解有关分区的更多信息。
  • 问:Amazon Athena 是否支持数据分区?

    • 可以。Amazon Athena 允许您对任意列上的数据进行分区。分区能够限制查询扫描的数据量,从而节省成本并提高性能。您可以在 CREATE TABLE 语句中使用 PARTITIONED BY 子句指定分区方案。了解有关分区数据的更多信息。
  • 问:如何在 Amazon Athena 中向现有的表添加新数据?

    • 如果您的数据已分区,只要 Amazon S3 上有新数据可用,就需要运行元数据查询 (ALTER TABLE ADD PARTITION) 将此分区添加到 Athena。如果您的数据未分区,只需将新数据 (或文件) 添加到现有前缀,即可将数据自动添加到 Athena。了解有关分区数据的更多信息。
  • 问:我在 Amazon S3 中存储着大量日志数据。可以使用 Amazon Athena 进行查询吗?

    • 可以。通过 Amazon Athena 您可以方便地对现有日志数据运行标准 SQL 查询。Athena 直接从 Amazon S3 查询数据,因此无需移动或加载数据。只需使用 DDL 语句定义架构,即可开始查询数据。

查询和数据格式

  • 问:Amazon Athena 支持哪些类型的查询?

    • Amazon Athena 支持 ANSI SQL 查询。Amazon Athena 使用 Presto (一种开源的内存分布式 SQL 引擎),能够处理复杂的分析,包括大型联接、窗口函数和数组。
  • 问:能否将 Amazon QuickSight 与 Amazon Athena 配合使用?

    • 可以。Amazon Athena 与 Amazon QuickSight 集成,可方便地可视化存储在 Amazon S3 中的数据。
  • 问:Athena 是否支持其他 BI 工具和 SQL 客户端?

    • 可以。Amazon Athena 提供 JDBC 驱动程序,您可以将其与其他商业智能工具和 SQL 客户端配合使用。
  • 问:如何访问 Amazon Athena 支持的函数?

    • 有关 Amazon Athena 支持的函数的更多信息,请单击此处。
  • 问:如何提高查询性能?

    • 您可以通过压缩、分区或将数据转换为列格式来提高查询性能。Amazon Athena 支持开源列数据格式,如 Apache Parquet 和 Apache ORC。将数据转换为压缩的列格式可降低成本,并通过减少 Athena 在执行查询时从 S3 扫描的数据来提高查询性能。

安全性与可用性

  • 问:如何控制对我的数据的访问?

    • Amazon Athena 允许您通过使用 AWS Identity and Access Management (IAM) 策略、访问控制列表 (ACL) 和 Amazon S3 存储桶策略来控制对数据的访问。通过 IAM 策略,您可以授予 IAM 用户对 S3 存储桶的细化控制权。通过控制对 S3 中数据的访问,您可以限制用户使用 Athena 对其进行查询。
  • Athena 可以查询 Amazon S3 中的加密数据吗?

    • 可以。您可以查询使用 Amazon S3 托管加密密钥在服务器端加密的数据、使用 AWS Key Management Service (KMS) 托管密钥在服务器端加密的数据以及使用 KMS 托管的密钥在客户端加密的数据。Amazon Athena 还与 KMS 实现了集成,支持您加密您的结果集。
  • 问:Athena 是否具有高可用性?

    • 可以。Amazon Athena 具有高可用性,它会利用跨多个设施的计算资源执行查询,如果特定设施无法访问,它会适当地自动路由查询
    • Athena 使用 Amazon S3 作为基础数据存储,可确保您的数据具有高可用性和高持久性。Amazon S3 提供耐久的基础设施存储重要数据,其设计旨在为对象提供 99.999999999% 的耐久性。您的数据将跨多个设施和在各个设施的多个设备间冗余存储。
  • 问:我可以提供对他人 S3 存储桶的跨账户访问权限吗?

    • 可以。您可以提供对 Amazon S3 的跨账户访问权限。