Saltar al contenido

SPARK DataFrame: cómo dividir de manera eficiente el marco de datos para cada grupo en función de los mismos valores de columna

Recuerda que en las ciencias un error casi siempre tiene más de una resoluciones, pero nosotros aquí te enseñaremos lo más óptimo y mejor.

Solución:

Como se señaló en mis comentarios, un enfoque potencialmente fácil para este problema sería usar:

df.write.partitionBy("hour").saveAsTable("myparquet")

Como se señaló, la estructura de carpetas sería myparquet/hour=1, myparquet/hour=2..., myparquet/hour=24 Opuesto a myparquet/1, myparquet/2..., myparquet/24.

Para cambiar la estructura de carpetas, puede

  1. Usar potencialmente la opción de configuración de Hive hcat.dynamic.partitioning.custom.pattern dentro de un HiveContext explícito; más información en HCatalog DynamicPartitions.
  2. Otro enfoque sería cambiar el sistema de archivos directamente después de haber ejecutado el df.write.partitionBy.saveAsTable(...) comando con algo como for f in *; do mv $f $f/$f:0:5/ ; done que eliminaría la Hour= texto del nombre de la carpeta.

Es importante tener en cuenta que al cambiar el patrón de nombres de las carpetas, cuando esté ejecutando spark.read.parquet(...) en esa carpeta, Spark no comprenderá automáticamente las particiones dinámicas ya que falta la clave de partición (es decir, Hour) información.

Aquí tienes las comentarios y calificaciones

Recuerda que puedes dar recomendación a esta noticia si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.