Как подсказывает @pault, поле данных представляет собой поле string
. поскольку ключи одинаковые (т. е. 'key1', 'key2') в строке JSON над строками, вы также можете использовать json_tuple()
(эта функция является новой в версии 1.6 на основе документации)
from pyspark.sql import functions as F
df.select('id', 'point', F.json_tuple('data', 'key1', 'key2').alias('key1', 'key2')).show()
Ниже Мой оригинальный пост: , что наиболее вероятно НЕПРАВИЛЬНО , если исходная таблица из df.show(truncate=False)
и, таким образом, поле data
НЕ является структурой данных Python.
Поскольку вы разбили данные на строки, я предположил, что столбец data
представляет собой структуру данных Python вместо строки:
from pyspark.sql import functions as F
df.select('id', 'point', F.col('data').getItem('key1').alias('key1'), F.col('data')['key2'].alias('key2')).show()