¿Alguien puede decirme cómo convertir una lista que contiene cadenas a un Dataframe en pyspark. Estoy usando python 3.6 con spark 2.2.1. Acabo de comenzar a aprender el entorno de chispa y mis datos se ven a continuación

my_data =[['apple','ball','ballon'],['cat','camel','james'],['none','focus','cake']]

Ahora, quiero crear un marco de datos de la siguiente manera

---------------------------------
|ID | words                     |
---------------------------------
 1  | ['apple','ball','ballon'] |
 2  | ['cat','camel','james']   |

Incluso quiero agregar una columna de ID que no está asociada en los datos

1
user9226665 17 ene. 2018 a las 01:21

3 respuestas

La mejor respuesta

Puede convertir la lista en una lista de objetos Row, luego usar spark.createDataFrame que inferirá el esquema de sus datos:

from pyspark.sql import Row
R = Row('ID', 'words')

# use enumerate to add the ID column
spark.createDataFrame([R(i, x) for i, x in enumerate(my_data)]).show() 
+---+--------------------+
| ID|               words|
+---+--------------------+
|  0|[apple, ball, bal...|
|  1| [cat, camel, james]|
|  2| [none, focus, cake]|
+---+--------------------+
3
Psidom 16 ene. 2018 a las 22:33

Prueba esto: el enfoque más simple

  from pyspark.sql import *
  x = Row(utc_timestamp=utc, routine='routine name', message='your message')
  data = [x]
  df = sqlContext.createDataFrame(data) 
0
Jie 17 may. 2018 a las 19:33

Prueba esto -

data_array = []
for i in range (0,len(my_data)) :
    data_array.extend([(i, my_data[i])])

df = spark.createDataframe(data = data_array, schema = ["ID", "words"])

df.show()
0
user7348570 24 ene. 2018 a las 09:09
48290759