Athena-ում տվյալների բազա ստեղծելը կարելի է անել՝ ստեղծելով ձեր սեփական API հարցումը կամ օգտագործելով SDK:
Ահա Python-ի օրինակ՝ օգտագործելով SDK.
import boto3
client = boto3.client('athena')
config = {'OutputLocation': 's3://TEST_BUCKET/'}
client.start_query_execution(
QueryString = 'create database TEST_DATABASE',
ResultConfiguration = config
)
Կան SDK-ներ Java, .NET, Node, PHP, Python, Ruby, Go և C++: Եթե ցանկանում եք ստեղծել ձեր սեփական API հարցումները, խորհուրդ եմ տալիս լավ հասկանալ ստորագրման գործընթաց: Դուք կարող եք նաև օգտագործել 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)
Պարկետի ֆայլերից աղյուսակ ստեղծելու որոշ DDL տեսնելու համար տես հետևյալ օրինակները Amazon-ում: Athena Օգտագործողի ուղեցույց:
Խմբագրել Ի պատասխան @condo1234-ի հարցերին.
Բայց ինչպես կարող եմ կապել տվյալների բազան S3-ի ֆայլի հետ:
Կարճ պատասխանն այն է, որ դուք չեք: Դուք աղյուսակը կապում եք S3-ի դույլի մեջ նախածանցով կիսվող ֆայլերի հետ:
Օրինակ, ասեք, որ ես ուզում եմ ստեղծել աղյուսակ՝ s3://TEST_BUCKET
-ում պահվող տվյալները վերլուծելու համար: AWS Console-ի միջոցով ես կարող եմ օգտագործել վատ անվանումով «Ստեղծել թղթապանակ» կոճակը՝ 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-ը թղթապանակի գաղափար չունի: Այնուամենայնիվ, այս նախածանցները օգտակար են, քանի որ թույլ են տալիս Աթենայի բաժանումը:
Ձեր խնդրանքով, ահա նաև 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 ավելին:
04.12.2017