AMcoder - javascript, python, java, html, php, sql

Ինչպես ստեղծել Athena տվյալների բազա API-ի միջոցով

Ես կցանկանայի ստեղծել տվյալների բազա Աթենայում API-ի միջոցով: Ես ունեմ մանրահատակի ֆայլեր S3-ում, որոնք ես կցանկանայի հարցումներ կատարել API-ի միջոցով, և ես կցանկանայի օգտագործել Athena-ն հարցման համար:

Ամեն դեպքում, ես կարող եմ ստեղծել տվյալների բազա API-ի միջոցով Athena-ի համար:

04.12.2017

Պատասխանները:


1

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
  • Բայց ինչպես կարող եմ կապել տվյալների բազան S3-ի ֆայլի հետ: Ես օգտագործում եմ PHP 14.12.2017
  • @condo1234 Կարճ պատասխանն այն է, որ դուք չեք: Դուք աղյուսակը կապում եք S3-ում տեղանքի հետ: Օրինակ, եթե ցանկանում եք test.csv ֆայլը կապել աղյուսակի test_table-ի հետ, ապա test.csv-ն տեղադրեք s3-ի տվյալ վայրում (ասենք s3://myfles/test_table_data/), տեղադրեք test.csv-ն այն վայրում (s3): : Սա թույլ է տալիս ավելացնել ավելի շատ տվյալներ՝ պարզապես լրացուցիչ ֆայլեր վերբեռնելով S3-ի թղթապանակում: Այնուամենայնիվ, դուք չեք կարող խառնել և համապատասխանեցնել տարբեր ձևաչափերի ֆայլերը նույն վայրում: 27.01.2018
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..