Создать фрейм данных из колонки словарей в pyspark - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу создать новый фрейм данных из существующего фрейма данных в pyspark.Фрейм данных "df" содержит столбец с именем "data", который содержит строки словаря и имеет схему в виде строки.И ключи каждого словаря не являются фиксированными. Например, имя и адрес являются ключами для словаря первой строки, но это не относится к другим строкам, они могут отличаться.Вот пример для этого:

........................................................
  data 
........................................................
 {"name": "sam", "address":"uk"}
........................................................
{"name":"jack" , "address":"aus", "occupation":"job"}
.........................................................

Как преобразовать в фрейм данных с отдельными столбцами, как показано ниже.

 name   address    occupation
 sam       uk       
 jack      aus       job

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Если порядок строк не важен, это еще один способ сделать это:

from pyspark import SparkContext
sc = SparkContext()

df = sc.parallelize([
    {"name":"jack" , "address":"aus", "occupation":"job"},
    {"name": "sam", "address":"uk"}     
 ]).toDF()

df = df.na.fill('')

df.show()

+-------+----+----------+
|address|name|occupation|
+-------+----+----------+
|    aus|jack|       job|
|     uk| sam|          |
+-------+----+----------+
0 голосов
/ 09 ноября 2018

Преобразовать data в RDD, затем использовать spark.read.json для преобразования RDD в фрейм данных со схемой.

data = [
    {"name": "sam", "address":"uk"}, 
    {"name":"jack" , "address":"aus", "occupation":"job"}
]

spark = SparkSession.builder.getOrCreate()
df = spark.read.json(sc.parallelize(data)).na.fill('') 
df.show()
+-------+----+----------+
|address|name|occupation|
+-------+----+----------+
|     uk| sam|          |
|    aus|jack|       job|
+-------+----+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...