【Pyspark-驯化】一文搞懂PYspark中读取各类数据格式技巧:parquet、hdfs、json

【Pyspark-驯化】一文搞懂PYspark中读取各类数据格式技巧:parquet、hdfs、json
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 相关内容文档获取 微信公众号
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1.基本介绍

  通过Pyspark读取数据对于工业界进行数据分析、数据建模一项必不可少的工作,通常情况下对于数据我们会存放到:hdfs、hive、本地,因此,我们通常通过pyspark来读取存放到上面地方的数据,具体可以读取的数据格式如下所示:

  • CSV
  • JSON
  • Parquet
  • Hive表
  • JDBC等。

  通常我们将数据保存为parquet格式,这样可以将数据的存放大小缩小一个量级。

💡 2. 代码用法

2.1 初始化spark环境

  为了使得读取数据的时候,我们需要先初始化一下spark环境,具体的代码如下所示:

from pyspark.sql import SparkSession

# 创建SparkSession
spark = SparkSession.builder \
    .appName("Read Data Example") \
    .getOrCreate()

2.2 读取hdfs上的数据

  有时候在进行工程开发的时候,我们通常需要将一些本地的数据上传到dfs上面,然后使用它与其他hive表中的数据进行合并处理,具体的通过spark读取hdfs上面的代码如下所示:

fileName = "afs:zhanghaoyun/seo/sland_struct/" + todaystr 
data_schema = StructType([
            StructField('url', StringType()),
            StructField('locMd5', StringType()),
        ])
return  spark.read.options(delimiter = '\t', quoteMode = 'NONE', parserLib = 'univocity',\
                    nullValue = 'NULL', escape = '\\')\
        .schema(data_schema).csv(fileName)

2.3 从hive中读取数据

  通过spark读取数据最为常见的方法就是通过spark读取hive表中的数据并对其进行处理,基本上和写sql没有什么太大的区别,一点需要注意的点就是在写sql是需要写三个"这样在换行的时候不需要转义,具体的写法如下所示:

4. 从hive表中读取数据
sc_conf = SparkConf().setAppName('test')
spark = SparkSession.builder.config(conf=sc_conf).enableHiveSupport().getOrCreate()
sc = spark.sparkContext
sql_query = """select a.id,  a.query from 表地址.表名 a \
            where a.event_day = {} and
            (a.a = 'a' or
            (a.b = 'b' and c in ('s','s/index','shop/index','shopindex','c','c/index'))) and
            a.d != 'd' and
            a.e not like '%有限公司%' and
            a.f not like '%http%' and
            a.h != "x" and
            a.g != "x" and
            length(a.a) < 25
            group by a.d, a.f
            """.format(day)
df_res = spark.sql(sql_query)

2.4 读取Parquet文件

  通常我们存放到hdfs的数据打都输parquet格式,这种格式可以极大的减小数据的大小,具体的读取方法如下所示:

# 读取Parquet文件
df_parquet = spark.read.parquet("path/to/your/data.parquet")

# 显示数据帧内容
df_parquet.show()


+---+-----+------+
| age|name|salary|
+---+-----+------+
| 25 |John|50000.0|
| 30 |Mike|60000.0|
...

💡 3. 注意事项

  • 确保指定正确的文件路径和文件格式。
  • 在读取数据时,根据需要选择合适的选项,如inferSchema、header等。
  • 对于大型数据集,考虑使用分区来提高读取效率。
  • 在处理大型数据集时,注意内存和资源管理。

💡 4. 总结

  PySpark提供了多种方式来读取不同类型的数据源。通过SparkSession,我们可以轻松地读取CSV、JSON、Parquet等格式的数据,并进行进一步的处理和分析。希望这篇博客能够帮助你更好地理解如何在PySpark中读取数据,并将其应用于处理大规模数据集。

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法驯化师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值