Simulation de Streaming sur AWS
1 Créer un bucket
-
- du dossier de la VM :
U:\Eleves\Informatique\Big Data\tweet_stream
- ou télécharger puis dezipper depuis ce lien
- du dossier de la VM :
-
- En remplaçant
bucket_name = 'ensai-labs-2023-2024-files'
par le nom de votre bucket - Notez ensuite l’URI de votre fichier (ex : s3://ensai-labs-2023-2024-files/stream_simulation.py)
- En remplaçant
import boto3
import time
import os
# Configuration des dossier source et destination
= 'ensai-labs-2023-2024-files'
bucket_name = 'source/tweets' # Préfixe commun des noms de fichier à copier
file_prefix = '.jsonl.gz'
file_extension
# Créer un client S3
= boto3.client('s3')
s3
# Fonction pour copier les fichiers avec l'extension .jsonl.gz
def copy_files():
try:
# Liste les objets dans le dossier source
= s3.list_objects_v2(Bucket=bucket_name, Prefix=file_prefix)
response
if 'Contents' in response:
for obj in response['Contents']:
2)
time.sleep(= obj['Key']
key if key.endswith(file_extension):
= os.path.basename(key)
file_name # Copier le fichier du dossier source vers le dossier destination
s3.copy_object(=bucket_name,
Bucket={'Bucket': bucket_name, 'Key': key},
CopySource=f"lab3/destination/{file_name}"
Key
)print(f"Fichier {file_name} copié avec succès.")
except Exception as e:
print("Erreur lors de la copie des fichiers :", e)
# Fonction pour vider le dossier destination lorsqu'il est plein
def empty_destination_bucket():
try:
# Liste les objets dans le dossier destination
= s3.list_objects_v2(Bucket=bucket_name, Prefix="destination/tweets")
response if 'Contents' in response:
# Supprimer chaque objet du dossier destination
for obj in response['Contents']:
=bucket_name, Key=obj['Key'])
s3.delete_object(Bucketprint("dossier destination vidé avec succès.")
except Exception as e:
print("Erreur lors de la vidange du dossier destination :", e)
# Copier les fichiers et vider le dossier destination
while True:
copy_files() empty_destination_bucket()
2 Programme de transfert de fichiers
Le but de ce programme est de simuler un flux de fichiers entre les dossiers source
et destination
-
- installez python :
sudo yum install -y python3-devel.x86_64
- installez le package boto3 :
pip install boto3
- copiez votre programme
aws s3 cp <S3_URI_programme_python>
- ex :
aws s3 cp s3://ensai-labs-2023-2024-files/stream_simulation.py
- ex :
- lancez le programme :
python3 stream_simulation.py
- ou lancer en arrière plan :
nohup python3 ec2_stream_simul.py &
- ou lancer en arrière plan :
- installez python :
Si tout se passe bien, les fichiers sont copiés toutes les 2 secondes du dossier source vers destination.
Ce dernier est vidé lorsque tous les fichiers sont copiés.