PySparkでJSON文字列が入った列のデータを取り出す

+---+----------+
| id|     value|
+---+----------+
|  1|{"a": 123}|
|  2|{"a": 456}|
|  3|{"a": 789}|
+---+----------+

こちらのvalue列内のJSON文字列からaの要素を新しい列に取り出してみます。

from pyspark.sql.functions import get_json_object

df = spark.createDataFrame([
        (1, '{"a": 123}'),
        (2, '{"a": 456}'),
        (3, '{"a": 789}')
    ],
    ["id", "value"])

df = df.withColumn("a", get_json_object(col("value"), "$.a").cast("integer"))
df.show()

get_json_objectというメソッドを使ってJSON文字列から値を取り出すことができるので、取り出したデータをwithColumnで新しい列を追加して値を入れます。

+---+----------+---+
| id|     value|  a|
+---+----------+---+
|  1|{"a": 123}|123|
|  2|{"a": 456}|456|
|  3|{"a": 789}|789|
+---+----------+---+

参照