Primeros pasos con pyspark

Conteo de palabras de muestra en Pyspark

El ejemplo subyacente es solo el que se proporciona en la documentación oficial de pyspark. Haga clic aquí para acceder a este ejemplo.

# 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://...")

Consumir datos de S3 usando PySpark

Existen dos métodos mediante los cuales puede consumir datos del depósito de AWS S3.

  1. Uso de la API sc.textFile (o sc.wholeTextFiles): esta API también se puede usar para HDFS y el sistema de archivos 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)
  1. Leerlo usando una API personalizada (por ejemplo, un descargador 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))

Recomiendo usar el enfoque 2 porque mientras trabaja con el enfoque 1, el controlador descarga todos los datos y los trabajadores simplemente los procesan. Esto tiene los siguientes inconvenientes:

  1. Se quedará sin memoria a medida que aumente el tamaño de los datos.
  2. Sus trabajadores estarán inactivos hasta que se hayan descargado los datos

Instalación o configuración

Instrucciones detalladas sobre cómo configurar o instalar pyspark.