Вы можете поместить string literals
в structs
в array
.
x = [('1', 'hello'),('2','Hi'),('3', 'Hello')]
df.withColumn("col1", F.array(*[F.struct(F.lit(i[0]),F.lit(i[1])) for i in x])).show(truncate=False)
+---------------------------------+
|col1 |
+---------------------------------+
|[[1, hello], [2, Hi], [3, Hello]]|
|[[1, hello], [2, Hi], [3, Hello]]|
+---------------------------------+
Or
, вы создаете array
из arrays
:
x = [('1', 'hello'),('2','Hi'),('3', 'Hello')]
df.withColumn("col1", F.array(*[F.array(F.lit(i[0]),F.lit(i[1])) for i in x])).show(truncate=False)
+---------------------------------+
|col1 |
+---------------------------------+
|[[1, hello], [2, Hi], [3, Hello]]|
|[[1, hello], [2, Hi], [3, Hello]]|
+---------------------------------+
Or
, вы можете использовать create_map
аналогичным образом:
x = [('1', 'hello'),('2','Hi'),('3', 'Hello')]
df.withColumn("col1",F.array(*[F.create_map(F.lit(i[0]),F.lit(i[1])) for i in x])).show(truncate=False)
+---------------------------------------+
|col1 |
+---------------------------------------+
|[[1 -> hello], [2 -> Hi], [3 -> Hello]]|
|[[1 -> hello], [2 -> Hi], [3 -> Hello]]|
+---------------------------------------+