[PYTHON] [AWS] Suchen und Abrufen der erforderlichen Daten aus S3-Dateien mit S3 Select

Was du machen willst

Ich möchte S3 Select verwenden, um S3-Dateien mit einer SQL-Abfrage zu durchsuchen, um die erforderlichen Datensätze zu erhalten. Qiita logo

Eine fröhliche Veranstaltung

Punkte von S3 auswählen

Versuchen Sie, über den Konsolenbildschirm von S3 zu arbeiten

Dieses Mal platzieren wir eine Beispieldatei im folgenden Format in S3 und überprüfen sie.

sample.tsv


male	14	student
female	26	employee
male	32	selfemployed
male	45	unemployed
female	11	student
male	24	employee
male	33	selfemployed
male	49	unemployed
female	57	unemployed

Wählen Sie die Zieldatei auf dem S3-Konsolenbildschirm aus und wählen Sie die Registerkarte S3-Auswahl. 1.png

Dateiformat: CSV Trennzeichen: Tab Komprimierung: Keine "Nächster" 2.png

Geben Sie die SQL ein, die Sie ausführen möchten. Ich möchte eine Aufzeichnung erhalten, deren erste Spalte "weiblich" ist.

SQL


select * from s3object s where s._1 = 'female'

3.png Ich konnte es richtig bekommen. Sie können es als CSV-Datei herunterladen, indem Sie auf "Download" klicken.

Es gibt einige Beispiel-SQLs. Probieren Sie sie aus. 5.png

Führen Sie die SQL-Abfrage in Python von der EC2-Instanz aus

Wir werden auch versuchen, SQL-Abfragen in Python von einer EC2-Instanz aus auszuführen. Installieren Sie zunächst das erforderliche Python.

#Installieren Sie Python 3
$ sudo yum update -y
$ sudo yum install python3 -y

#Virtuelle Umgebung aktivieren
$ python3 -m venv ~/s3select_example/env
$ source ~/s3select_example/env/bin/activate

#installiere boto3
$ pip install pip --upgrade
$ pip install boto3

Erstellen Sie als Nächstes eine Python-Datei.

S3Select.py


import boto3

s3 = boto3.client('s3')

resp = s3.select_object_content(
    Bucket='my-bucket.01',
    Key='sample/sample.tsv',
    ExpressionType='SQL',
    Expression="SELECT * FROM s3object s where s._1 = 'female'",
    InputSerialization = {'CSV': {"FileHeaderInfo": "NONE", 'FieldDelimiter': '\t'}, 'CompressionType': 'NONE'},
    OutputSerialization = {'CSV': {}},
)

for event in resp['Payload']:
    if 'Records' in event:
        records = event['Records']['Payload'].decode('utf-8')
        print(records)

Ordnen Sie Bucket und Key der Datei zu, die von S3 gelesen werden soll. Da die Zieldatei diesmal durch Tabulatoren getrennt ist, wird für den Feldtrenner der Eingabeserialisierung "'\ t'" angegeben.

Lass es uns laufen.

$ python S3Select.py

female,26,employee
female,11,student
female,57,unemployed

Der gleiche Datensatz wie das Ergebnis der Ausführung über den Konsolenbildschirm wurde ausgegeben!

Dieses Mal habe ich die S3-Datei direkt mit einer SQL-Abfrage durchsucht und den Zieldatensatz abgerufen. Ich untersuche manchmal S3-Dateien, daher würde ich sie gerne verwenden, wenn ich die Gelegenheit dazu habe.

Referenz: https://aws.amazon.com/jp/blogs/news/querying-data-without-servers-or-databases-using-amazon-s3-select/

Recommended Posts

[AWS] Suchen und Abrufen der erforderlichen Daten aus S3-Dateien mit S3 Select
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Einstellungen zum Lesen von S3-Dateien mit Pandas aus Jupyter Notebook unter AWS
Daten aus S3 extrahieren
Aggregierte AWS S3-Daten
Erste Schritte mit dem Zeichnen mit matplotlib: Erstellen von Diagrammen aus Datendateien
Wiederholen Sie mit While. Skript zum Twittern oder Suchen vom Terminal aus
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Bearbeiten von Kintondaten mit dem Python & C Data ODBC-Treiber von AWS Lambda
Laden Sie Daten mit einem Befehl und einer Aktualisierung auf s3 von aws hoch und löschen Sie die verwendeten Daten (unterwegs).
Laden wir S3-Dateien mit CLI hoch
Lesen und verwenden Sie Python-Dateien aus Python
Installieren Sie die Datendatei mit setup.py
Speichern und Abrufen von Dateien mit Pepper
Einfacher AWS S3-Test mit MinIO
Verwalten Sie Ihre Daten mit AWS RDS
Greifen Sie mit Python auf die Web-API zu, um IoT-Daten zu registrieren / zu erfassen (dweet.io, Requests, HTTPie).
Gesichtserkennung aus mehreren Bilddateien mit openCV, ausschneiden und speichern
Ab pandas1.0.0 können Sie die S3 / GCS-URL mit read_pickle () und to_pickle () angeben!
Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.
Machen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (4. Datenstruktur)