Entiendo que partitionBy particiones función de mis datos. Si yo uso rdd.partitionBy(100) se partición mis datos clave en 100 partes. es decir, los datos asociados con teclas similares se agrupan

  1. Es mi entendimiento correcto?
  2. Es conveniente que el número de particiones de igual número de
    los núcleos disponibles? Eso hace que el procesamiento sea más eficiente?
  3. ¿qué pasa si mis datos no es en clave,formato de valor. Puedo usar esta función?
  4. digamos que mis datos se serial_number_of_student,student_name. En este
    caso puedo partición mis datos por student_name en lugar de la
    serial_number?

OriginalEl autor user2543622 | 2016-03-13

2 Comentarios

  1. 10
    1. No exactamente. Chispa, incluyendo PySpark, es por defecto el uso de particionamiento hash. Excluyendo claves idénticas que no es práctico similitud entre las teclas asignadas a una sola partición.
    2. La respuesta no es sencilla aquí. Todo depende de la cantidad de datos y los recursos disponibles. Demasiado grande o demasiado bajo número de particiones degradará el rendimiento.

      Algunos de los recursos reclamar el número de particiones debe alrededor de dos veces tan grande como el número de núcleos disponibles. Desde el otro lado de una sola partición que normalmente no debe contener más de 128 mb y una sola shuffle bloque no puede ser de más de 2GB (Ver CHISPA-6235).

      Por último se han de corregir los datos potenciales sesgos. Si algunas teclas están sobre-representados en el conjunto de datos puede resultar en el óptimo uso de los recursos y potenciales de falla.

    3. No, o al menos no directamente. Usted puede utilizar keyBy método para convertir RDD a formato requerido. Además, cualquier objeto de Python puede ser tratada como una par clave-valor el tiempo que implementa los métodos necesarios que hacen que se comporte como un Iterable de longitud igual a dos. Ver Cómo determinar si el objeto es válido par clave-valor en PySpark

    4. Depende de los tipos. Mientras la clave es hashable* a continuación, en sí. Normalmente, esto significa que ha de ser inmutable estructura y todos los valores que contiene tiene que ser inmutable así. Por ejemplo una lista no es una clave válida pero un tuple de números enteros es.

    Citar Python glosario:

    Un objeto es hashable si tiene un valor hash que nunca cambia durante toda su vida (se necesita un __hash__() método), y puede ser comparado con otros objetos (que necesita un __eq__() método). Hashable objetos que comparar iguales deben tener el mismo valor de hash.

    OriginalEl autor zero323

  2. -1

    Recientemente he utilizado partitionby. Yo lo que hice fue reestructurar mis datos para que todos aquellos que me quieren poner en la misma partición tienen la misma clave, que a su vez es un valor de los datos. mis datos se muestra una lista de diccionario, que me convertí en tupples con clave de diccionario.Inicialmente el partitionby no mantenía el mismo teclas en la misma partición. Pero luego me di cuenta de que las llaves eran cadenas de caracteres. Me echaron a int. Pero el problema persistió. Los números eran muy grandes. Me asignan estos números para pequeños valores numéricos y funcionó. Así que mi opinión era que las claves deben ser enteros pequeños.

    OriginalEl autor Souvik Saha Bhowmik

Dejar respuesta

Please enter your comment!
Please enter your name here