gpt4 book ai didi

python - 使用 Pyspark 查询数据框中的 json 对象

转载 作者:可可西里 更新时间:2023-11-01 07:49:28 24 4
gpt4 key购买 nike

我有一个具有以下架构的 MySql 表:

id-int
path-varchar
info-json {"name":"pat", "address":"NY, USA"....}

我使用 JDBC 驱动程序将 pyspark 连接到 MySql。我可以使用

从 mysql 检索数据
df = sqlContext.sql("select * from dbTable")

这个查询工作正常。我的问题是,如何查询“信息”列?例如,下面的查询在 MySQL shell 中工作正常并检索数据,但这在 Pyspark (2+) 中不受支持。

select id, info->"$.name" from dbTable where info->"$.name"='pat'

最佳答案

from pyspark.sql.functions import *
res = df.select(get_json_object(df['info'],"$.name").alias('name'))
res = df.filter(get_json_object(df['info'], "$.name") == 'pat')

已经有一个名为get_json_object的函数了


针对您的情况:

df = spark.read.jdbc(url='jdbc:mysql://localhost:3306', table='test.test_json',
properties={'user': 'hive', 'password': '123456'})
df.createOrReplaceTempView('test_json')
res = spark.sql("""
select col_json,get_json_object(col_json,'$.name') from test_json
""")
res.show()

Spark sql和HIVE sql差不多,你看

https://cwiki.apache.org/confluence/display/Hive/Home

关于python - 使用 Pyspark 查询数据框中的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41560062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com