七初SEO网站建设,珠海做网站的,pc端浏览器手机版,营销型网站【Pyspark-驯化】一文搞懂Pyspark中对json数据处理使用技巧#xff1a;get_json_object 本次修炼方法请往下查看 #x1f308; 欢迎莅临我的个人主页 #x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合#xff0c;智慧小天地#xff01; #x1f387; …【Pyspark-驯化】一文搞懂Pyspark中对json数据处理使用技巧get_json_object 本次修炼方法请往下查看 欢迎莅临我的个人主页 这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合智慧小天地 相关内容文档获取 微信公众号 相关内容视频讲解 B站 博主简介AI算法驯化师混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40熟练掌握机器、深度学习等各类应用算法原理和项目实战经验。 技术专长 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务助力多位小伙伴在学习、求职、工作上少走弯路、提高效率近一年好评率100% 。 博客风采 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。 文章目录 1.基本介绍 2. 代码用法2.1 初始化spark环境2.2 创建包含JSON的DataFrame2.3 使用get_json_object提取数据 3. 高级用法3.1 提取多个字段 4. 注意事项 5. 总结 下滑查看解决方法 1.基本介绍 在处理存储为JSON格式的列时我们经常需要从嵌套结构中提取特定字段。PySpark提供了get_json_object函数它可以从JSON字符串中提取出特定的值。这个函数对于处理具有复杂JSON结构的DataFrame非常有用。 2. 代码用法
2.1 初始化spark环境 对于pyspark来讲常用的就是sparkcontext类一般都是先启动一个这样的程序才可以进行相应的操作而SparkSession可以在不创建SparkConfSparkContext或SQLContext的情况下创建SparkSession它们封装在SparkSession中 这个sparksession就是用来调取dataframe相关操作的类具体的操作如下 # 一般在进行spark-submit的.py文件在初始化的时候需要创建spark对象具体如下from pyspark import SparkConffrom pyspark import SparkContextfrom pyspark.sql import SparkSessionfrom pyspark.sql import SQLContextfrom pyspark.sql import Rowfrom pyspark.sql.types import StructTypefrom pyspark.sql.types import StructFieldfrom pyspark.sql.types import StringTypefrom pyspark.sql import functions as fnfrom pyspark.sql import types as Tsc_conf SparkConf().setAppName(b2b_fraud_data)spark SparkSession.builder.config(confsc_conf).enableHiveSupport().getOrCreate()
而对于上述的两个class来说经常对创建相关的临时表createOrReplaceTempView创建临时视图此视图的生命周期与用于创建此数据集的[SparkSession]相关联。 createGlobalTempView创建全局临时视图此时图的生命周期与Spark Application绑定。如果想要删除的话就得使用spark.catalog.dropGlobalTempView(“tempViewName”)
2.2 创建包含JSON的DataFrame 为了更加方便的了解解析的过程我们创建相关的json数据格式来进行解析具体的代码如下所示
from pyspark.sql import Row# 创建一个包含JSON数据的DataFrame
data [Row(id1, features{choices:[{message:{content:Hello World}}]}),Row(id2, features{choices:[{message:{content:Welcome to PySpark}}]})]df spark.createDataFrame(data)
df.show(truncateFalse)
df2 spark.createDataFrame(data2)---------------------------------------------------------
| id|features |
---------------------------------------------------------
|1 |{choices:[{message:{content:Hello World}}]} |
|2 |{choices:[{message:{content:Welcome to PySpark}}]}|2.3 使用get_json_object提取数据 使用get_json_object提取features列中的content字段具体的代码如下所示
# 使用get_json_object提取features列中的content字段
df_with_content df.withColumn(content, get_json_object(df.features, $.choices[0].message.content))# 显示结果
df_with_content.show(truncateFalse)---------------------------------------------------------------------
| id|features |content |
---------------------------------------------------------------------
|1 |{choices:[{message:{content:Hello World}}]} |Hello World |
|2 |{choices:[{message:{content:Welcome to PySpark}}]}|Welcome to PySpark| 3. 高级用法
3.1 提取多个字段 我假设我们需要同时提取多个字段具体的代码如下所示
# 假设我们需要同时提取多个字段
df_with_multiple_fields df.withColumn(content, get_json_object(df.features, $.choices[0].message.content)) \.withColumn(message_type, get_json_object(df.features, $.choices[0].message.type))# 显示结果
df_with_multiple_fields.show(truncateFalse) 4. 注意事项
get_json_object函数接受两个参数DataFrame中的列名和JSON路径。JSON路径使用美元符号 开头后面跟随字段路径例如 开头后面跟随字段路径例如 开头后面跟随字段路径例如.choices[0].message.content。如果JSON数据结构不匹配或路径错误将返回null。 5. 总结 get_json_object函数是PySpark中处理嵌套JSON数据的有用工具。通过本博客的代码示例我们学习了如何使用这个函数从复杂的JSON结构中提取所需的字段。希望这篇博客能够帮助你更好地理解get_json_object的用法并将其应用于处理JSON数据的任务中。