Создайте фрейм данных в Pyspark, используя случайные значения из списка

#python #pandas #apache-spark #pyspark #apache-spark-sql

Вопрос:

Мне нужно преобразовать этот код в эквивалент PySpark. Я не могу использовать панд для создания фрейма данных.

Вот как я создаю фрейм данных с помощью Панд:

 df['Name'] = np.random.choice(["Alex","James","Michael","Peter","Harry"], size=3)
df['ID'] = np.random.randint(1, 10, 3)
df['Fruit'] = np.random.choice(["Apple","Grapes","Orange","Pear","Kiwi"], size=3)
 

Фрейм данных должен выглядеть так в PySpark:

df

 Name   ID  Fruit
Alex   3   Apple
James  6   Grapes
Harry  5   Pear
 

Я попробовал следующее для 1 столбца:

 sdf1 = spark.createDataFrame([(k,) for k in ['Alex','James', 'Harry']]).orderBy(rand()).limit(6).show()
 

Комментарии:

1. Что вы пробовали? Где ты застрял?

2. Я попытался создать один столбец из заданного списка

Ответ №1:

Сначала вы можете создать фрейм данных pandas, а затем преобразовать его в фрейм данных Pyspark. Или вы можете сжать 3 случайных массива numpy и создать фрейм данных spark следующим образом:

 import numpy as np

names = [str(x) for x in np.random.choice(["Alex", "James", "Michael", "Peter", "Harry"], size=3)]
ids = [int(x) for x in np.random.randint(1, 10, 3)]
fruits = [str(x) for x in np.random.choice(["Apple", "Grapes", "Orange", "Pear", "Kiwi"], size=3)]

df = spark.createDataFrame(list(zip(names, ids, fruits)), ["Name", "ID", "Fruit"])

df.show()

# ------- --- ------ 
#|   Name| ID| Fruit|
# ------- --- ------ 
#|  Peter|  8|  Pear|
#|Michael|  7|  Kiwi|
#|  Harry|  4|Orange|
# ------- --- ------ 
 

Ответ №2:

 names = np.random.choice(["Alex","James","Michael","Peter","Harry"], size=3)
id = np.random.randint(1, 10, 3)
fruits = np.random.choice(["Apple","Grapes","Orange","Pear","Kiwi"], size=3)
columns = ['Name', 'ID', "Fruit"]
  
dataframe = spark.createDataFrame(zip(names, id, fruits), columns)

dataframe.show()