Premiers pas avec pyspark
Exemple de nombre de mots dans Pyspark
L’exemple sous-jacent est juste celui donné dans la documentation officielle de pyspark. Veuillez cliquer [ici][1] pour accéder à cet exemple.
[1] : http://spark.apache.org/examples.html
# the first step involves reading the source text file from HDFS
text_file = sc.textFile("hdfs://...")
# this step involves the actual computation for reading the number of words in the file
# flatmap, map and reduceByKey are all spark RDD functions
counts = text_file.flatMap(lambda line: line.split(" ")) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b)
# the final step is just saving the result.
counts.saveAsTextFile("hdfs://...")
Consommer des données de S3 à l’aide de PySpark
Il existe deux méthodes à l’aide desquelles vous pouvez consommer les données du compartiment AWS S3.
- Utilisation de l’API sc.textFile (ou sc.wholeTextFiles) : Cette API peut également être utilisée pour HDFS et le système de fichiers local.
aws_config = {} # set your aws credential here
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", aws_config['aws.secret.access.key'])
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", aws_config['aws.secret.access.key'])
s3_keys = ['s3n/{bucket}/{key1}', 's3n/{bucket}/{key2}']
data_rdd = sc.wholeTextFiles(s3_keys)
- Le lire à l’aide d’une API personnalisée (disons un téléchargeur de boto) :
def download_data_from_custom_api(key):
# implement this function as per your understanding (if you're new, use [boto][1] api)
# don't worry about multi-threading as each worker will have single thread executing your job
return ''
s3_keys = ['s3n/{bucket}/{key1}', 's3n/{bucket}/{key2}']
# numSlices is the number of partitions. You'll have to set it according to your cluster configuration and performance requirement
key_rdd = sc.parallelize(s3_keys, numSlices=16)
data_rdd = key_rdd.map(lambda key: (key, download_data_from_custom_api(key))
Je recommande d’utiliser l’approche 2 car tout en travaillant avec l’approche 1, le pilote télécharge toutes les données et les travailleurs les traitent simplement. Cela présente les inconvénients suivants :
- Vous manquerez de mémoire à mesure que la taille des données augmente.
- Vos employés resteront inactifs jusqu’à ce que les données aient été téléchargées
[1] : http://boto.cloudhackers.com
Installation ou configuration
Instructions détaillées sur la configuration ou l’installation de pyspark.