Je souhaite utiliser S3 Sélectionnez pour rechercher des fichiers S3 avec une requête SQL pour obtenir les enregistrements requis.
Cette fois, nous placerons un exemple de fichier au format suivant sur S3 et le vérifierons.
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
Sélectionnez le fichier cible sur l'écran de la console S3 et sélectionnez l'onglet Sélection S3.
Format de fichier: CSV Délimiteur: Tabulation Compression: aucune "prochain"
Entrez le SQL que vous souhaitez exécuter. Je voudrais obtenir un disque dont la première colonne est "femme".
SQL
select * from s3object s where s._1 = 'female'
J'ai pu l'obtenir correctement. Vous pouvez le télécharger sous forme de fichier CSV en cliquant sur "Télécharger".
Il existe des exemples de SQL, alors essayez-les.
Nous allons également essayer le modèle d'exécution de requêtes SQL en Python à partir d'une instance EC2. Tout d'abord, installez le Python requis.
#Installez Python 3
$ sudo yum update -y
$ sudo yum install python3 -y
#Activer l'environnement virtuel
$ python3 -m venv ~/s3select_example/env
$ source ~/s3select_example/env/bin/activate
#installer boto3
$ pip install pip --upgrade
$ pip install boto3
Ensuite, créez un fichier Python.
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)
Faites correspondre Bucket et Key au fichier à lire par S3. De plus, puisque le fichier cible est cette fois délimité par des tabulations, "'\ t'" est spécifié pour le délimiteur de champ de sérialisation d'entrée.
Lançons-le.
$ python S3Select.py
female,26,employee
female,11,student
female,57,unemployed
Le même enregistrement que le résultat de l'exécution à partir de l'écran de la console a été produit!
Cette fois, j'ai recherché le fichier S3 directement avec une requête SQL et j'ai récupéré l'enregistrement cible. J'enquête parfois sur les fichiers S3, j'aimerais donc les utiliser si j'en ai l'occasion.
Référence: https://aws.amazon.com/jp/blogs/news/querying-data-without-servers-or-databases-using-amazon-s3-select/
Recommended Posts