0
点赞
收藏
分享

微信扫一扫

Python新手错误集锦(PyCharm)

小沙坨 2024-08-06 阅读 33

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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌵文章目录🌵


下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 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中读取数据,并将其应用于处理大规模数据集。

举报

相关推荐

0 条评论