No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
22 Hrs
7 Min
16 Seg
Curso de Fundamentos de Spark para Big Data

Curso de Fundamentos de Spark para Big Data

Óscar Gutiérrez Castillo

Óscar Gutiérrez Castillo

Particionando datos

24/25
Recursos

Aportes 9

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

sería bueno que este curso se actualizara para trabajar spark completamente en la nube, tomando archivos desde azure, aws o google cloud, convirtiendo los datos con spark desde una herramienta como databricks y subiendo todo este contenido a un storage también en la nube

Una pregunta Oscar, me surge una duda al particionar los datos, ¿Qué criterio debo tomar en cuenta a la hora de realizar una correcta partición de datos?

interesante

Usé este modo de lectura que a mí parecer es el más simple

rdd_schema = StructType([
    StructField("deporte_id", IntegerType(), False),
    StructField("deporte", StringType(), False)
])

rdd = spark.read.csv(path+"/rddDesdeArchivo",rdd_schema)
rdd.take(2)

En realidad lo que se tiene que extraer son todas las particiones en un lista, se puede hacer con os o cualquier otra herramienta, lo importante es que todas las particiones estén en la lista. Dejo la solución mia

from pathlib import Path

path = Path("salida")
files = [i for i in path.iterdir() if str(i).split("/")[1][0] == "p"]
val = list(map(lambda x: str(x.absolute()), files))
val.sort()
spark.sparkContext.textFile(','.join(val), 10).map(lambda l: l.split(",")).take(5)

Aqui muestro los resultados

[['deporte_id', 'deporte'],
 ['1', 'Basketball'],
 ['2', 'Judo'],
 ['3', 'Football'],
 ['4', 'Tug-Of-War']]


Quise simplificar el ejemplo de fredy
NOTA: p* indica que solo va a tomar todos los archivos que inicien con p por ende se omite el archivo _success

import glob
path = glob.glob("TuRuta/p* ")
path.sort()
rdd3 = spark.sparkContext.textFile(','.join(path),10).map(lambda l: l.split(','))
rdd3.take(5)

Yo estaba buscando, sistemas de almacenamiento de datos y llegué aquí.

Les comparto otra forma en la que también se pueden obtener los nombres de los archivos que nos interesan: ```python spark_particionado = SparkSession.builder.appName("Particionado").master("local[5]").getOrCreate() spark_particionado.sparkContext.wholeTextFiles("/mnt/d/Adrian/Cursos/PySpark/Inputs/testsaveas/*").map(lambda x: x[0::2][0]).collect() ```spark\_particionado.sparkContext.wholeTextFiles("/mnt/d/Adrian/Cursos/PySpark/Inputs/testsaveas/\*").map(lambda x: x\[0::2]\[0]).collect()
En mi caso no necesite utilizar wholeTextFile(), solamente con textFile() y la wild card \* fue suficiente. Muy sencillo!!! `rdd = spark.sparkContext.textFile('my_path/*')`