gpt4 book ai didi

amazon-athena - 如何通过 API 创建 Athena 数据库

转载 作者:行者123 更新时间:2023-12-03 14:59:47 31 4
gpt4 key购买 nike

我想通过 API 在 Athena 中创建一个数据库。我在 S3 中有 Parquet 文件,我想使用 API 进行查询,我想使用 Athena 进行查询。

无论如何,我可以通过 Athena 的 API 创建数据库吗?

最佳答案

在 Athena 中创建数据库可以通过创建自己的 API 请求或使用 SDK 来完成。 .

这是使用 SDK 的 Python 示例:

import boto3

client = boto3.client('athena')

config = {'OutputLocation': 's3://TEST_BUCKET/'}

client.start_query_execution(
QueryString = 'create database TEST_DATABASE',
ResultConfiguration = config
)

有适用于 Java、.NET、Node 的 SDK, PHP 、Python、Ruby、Go 和 C++。如果您想创建自己的 API 请求,我建议您深入了解 signing process .您也可以这样使用 AWS CLI:
$ aws athena start-query-execution --query-string "CREATE database ATHENA_TEST_TWO" --result-configuration "OutputLocation=s3://TEST_BUCKET/"

创建数据库后,您就可以在查询请求中传递数据库名称。
context = {'Database': 'TEST_DATABASE'}
client.start_query_execution(QueryString='CREATE TABLE ...',
QueryExecutionContext = context,
ResultConfiguration=config)

要查看从 Parquet 文件创建表的一些 DDL,请参见 Amazon Athena User Guide 上的以下示例。 .

针对@condo1234 的问题进行编辑:

But how do I associated a database with a file in S3?



简短的回答是你没有。您将表与在 S3 中的存储桶中共享前缀的文件相关联。

例如,假设我想创建一个表来分析 s3://TEST_BUCKET 中保存的数据。 .通过 AWS 控制台,我可以使用名称不佳的“创建文件夹”按钮来创建名为 one-table-many-files/ 的前缀。 .然后我创建了两个 csv 文件:

f1.csv
Codd,1923
Ellison,1944
Chamberlin,1944
Boyce,1947

f2.csv
Hopper,1906
Floyd,1953
Moriarty Wolf Chambers,1980

然后我将这些文本文件上传到示例存储桶/前缀组合 s3://TEST_BUCKET/one-table-many-files/
我运行了以下 DDL:
CREATE EXTERNAL TABLE php_test.computer_scientists (
name string,
year_born int
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION 's3://TEST_BUCKET/one-table-many-files/';

并运行以下 SQL 语句:
SELECT * FROM php_test.computer_scientists;

我得到了以下结果,数据来自 DDL 中指定的存储桶 + 前缀组合中的两个文件。
"name","year_born"
"Hopper","1906"
"Floyd","1953"
"Moriarty Wolf Chambers","1980"
"Codd","1923"
"Ellison","1944"
"Chamberlin","1944"
"Boyce","1947"

请注意,我使用的是“前缀”而不是“文件夹”这个词?那是因为 S3 有 no concept of a folder !然而,这些前缀很有用,因为它们允许 Athena Partitioning .

根据您的要求,这里还有一个 php 示例。
<?php
print('Welcome to PHP');

require 'aws-autoloader.php';

$athena = new Aws\Athena\AthenaClient(['version' => 'latest', 'region' => 'us-east-1' ]);

$athena->StartQueryExecution([
'QueryString' => 'CREATE DATABASE php_test;',
'ResultConfiguration' => [
'OutputLocation' => 's3://TEST_BUCKET/', // REQUIRED
],
]);

?>

PHP SDK Documentation更多。

关于amazon-athena - 如何通过 API 创建 Athena 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47625024/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com