создать фрейм данных pyspark на основе условия и списка значений - PullRequest
1 голос
/ 25 апреля 2019

У меня есть значение в переменной - ID как 1 и список из десяти значений, скажем

LIST1 = [1,2,3,4,5,6,7,8,9,10].

Теперь я хотел создать фрейм данных pysparkкак показано ниже:

ID  LIST
1   1
1   2
1   3
1   4
1   5
1   6
1   7
1   8
1   9
1   10

ПРИМЕЧАНИЕ. Длина List1 является динамической, в зависимости от ее длины нам необходимо иметь соответствующие строки.

1 Ответ

0 голосов
/ 25 апреля 2019

Это зависит от того, является ли идентификатор постоянным или у вас даже будет List2 с идентификатором 2, а затем вы захотите объединить оба в один DataFrame.

Что касается константы, есть два варианта:

ID = 1
LIST1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

source = list(map(lambda x: (ID, x), LIST1))
# source: [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10)]

df = spark.createDataFrame(source, ['ID', 'LIST'])
df.show()
# +---+----+                                                                      
# | ID|LIST|
# +---+----+
# |  1|   1|
# |  1|   2|
# |  1|   3|
# |  1|   4|
# |  1|   5|
# |  1|   6|
# |  1|   7|
# |  1|   8|
# |  1|   9|
# |  1|  10|
# +---+----+

или

from pyspark.sql.functions import lit

ID = 1
LIST1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

source = list(map(lambda x: (x,), LIST1))
# createDataFrame needs iter of iters -> list/tuple of lists/tuples
df = spark.createDataFrame(source, ['LIST'])
df.withColumn('ID', lit(ID)).show()
+----+---+
|LIST| ID|
+----+---+
|   1|  1|
|   2|  1|
|   3|  1|
|   4|  1|
|   5|  1|
|   6|  1|
|   7|  1|
|   8|  1|
|   9|  1|
|  10|  1|
+----+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...