欢迎访问宙启技术站
智能推送

pyspark.sql中如何读取并解析CSV文件

发布时间:2023-12-18 23:41:12

在pyspark.sql中,可以使用spark.read.csv()方法来读取和解析CSV文件。CSV文件是一种常用的数据存储格式,其中数据以逗号分隔,每行表示一个数据记录。

以下是读取和解析CSV文件的方法及示例:

1. 导入相关类和函数:

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DoubleType

首先,导入SparkSession类和相关的数据类型。

2. 创建SparkSession对象:

spark = SparkSession.builder.appName('CSV Reader').getOrCreate()

使用builder方法创建SparkSession对象,并设置应用程序的名称。

3. 定义数据模式:

schema = StructType([
    StructField("name", StringType(), True),
    StructField("age", IntegerType(), True),
    StructField("salary", DoubleType(), True)
])

使用StructType类来定义数据模式,其中每个字段都由StructField对象定义,包含字段名、字段类型和是否可为空。

4. 读取CSV文件:

df = spark.read.csv("path/to/file.csv", header=True, schema=schema)

使用spark.read.csv()方法读取CSV文件,可以指定文件路径、是否包含表头和数据模式。

5. 显示数据:

df.show()

使用show()方法显示读取的数据。

完整的示例代码如下:

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DoubleType

# 创建SparkSession对象
spark = SparkSession.builder.appName('CSV Reader').getOrCreate()

# 定义数据模式
schema = StructType([
    StructField("name", StringType(), True),
    StructField("age", IntegerType(), True),
    StructField("salary", DoubleType(), True)
])

# 读取CSV文件
df = spark.read.csv("path/to/file.csv", header=True, schema=schema)

# 显示数据
df.show()

这是一个简单的示例,读取并解析了带有名称、年龄和薪资字段的CSV文件。通过设置header=True,文件中的 行会被视为表头。通过定义数据模式,可以指定每个字段的类型和名称。

注意:在实际应用中,可以根据CSV文件的具体情况修改数据模式。另外,还可以使用其他配置选项来进一步调整CSV文件的读取行为,如分隔符、编码等。更多关于pyspark的CSV文件读取操作可以参考官方文档:[https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameReader.csv](https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameReader.csv)。