Pyspark convierte una lista estándar a dataframe

El caso es realmente simple, necesito convertir una lista de python en un dataframe con el siguiente código

from pyspark.sql.types import StructType from pyspark.sql.types import StructField from pyspark.sql.types import StringType, IntegerType schema = StructType([StructField("value", IntegerType(), True)]) my_list = [1, 2, 3, 4] rdd = sc.parallelize(my_list) df = sqlContext.createDataFrame(rdd, schema) df.show() 

falló con el siguiente error:

  raise TypeError("StructType can not accept object %r in type %s" % (obj, type(obj))) TypeError: StructType can not accept object 1 in type  

Esta solución también es un enfoque que utiliza menos código, evita la serialización a RDD y es probablemente más fácil de entender:

 from pyspark.sql.types import IntegerType # notice the variable name (more below) mylist = [1, 2, 3, 4] # notice the parens after the type name spark.createDataFrame(mylist, IntegerType()).show() 

NOTA: Acerca de nombrar su list variables: el término list es una función incorporada de Python y, como tal, se recomienda enfáticamente evitar el uso de nombres incorporados como nombre / etiqueta para nuestras variables porque terminamos sobrescribiendo cosas como la función list() . Cuando se crea un prototipo de algo rápido y sucio, varias personas usan algo como: mylist .

Por favor vea el siguiente código:

  from pyspark.sql import Row li=[1,2,3,4] rdd1 = sc.parallelize(li) row_rdd = rdd1.map(lambda x: Row(x)) df=sqlContext.createDataFrame(row_rdd,['numbers']).show() 

df

 +-------+ |numbers| +-------+ | 1| | 2| | 3| | 4| +-------+