如何在 PySpark 数据框中检查子字符串?
Pyspark 是提供 Apache Spark 接口的库。Apache Spark 是用于处理大型数据集的分布式计算系统。除了传统的 Java 和 Scala 语言之外,我们还可以使用 Python 在 Pyspark 中编写 Spark 应用程序。
在 PySpark 中验证子字符串
Pyspark 提供了数据框 API,它可以帮助我们操作结构化数据,例如 SQL 查询。它可以读取各种数据格式,如 parquet、csv、JSON 等。它还提供支持机器学习库的功能,可以使用分类、回归、聚类等。
我们有不同的方法来检查 PySpark 数据框中的子字符串。在本文中,我们将讨论以下内容:
使用 like() 或 rlike()
使用 substr()
安装 PySpark
在详细了解每种方法之前,我们必须使用以下代码在我们的工作环境中安装 pyspark。
!pip install pyspark
安装成功后,我们将得到如下所示的类似输出:
Looking in indexes: https://pypi.ac.cn/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting pyspark Downloading pyspark-3.3.2.tar.gz (281.4 MB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installing collected packages: py4j, pyspark Attempting uninstall: py4j Found existing installation: py4j 0.10.9.7 Uninstalling py4j-0.10.9.7: Successfully uninstalled py4j-0.10.9.7 Successfully installed py4j-0.10.9.5 pyspark-3.3.2
在 PySpark 中创建数据框
现在,我们必须使用指定的数据详细信息创建 PySpark 的数据框。步骤如下:
我们必须导入所有必要的 PySpark 模块和包才能创建数据框。
from pyspark.sql import SparkSession from pyspark.sql.types import *
接下来,我们必须创建 sparksession 来使用 pyspark 数据框。
spark = SparkSession.builder \ .appName("substring check") \ .getOrCreate()
我们必须使用 pyspark 定义用于创建数据框的模式。
schema = StructType([ StructField("name", StringType(), True), StructField("age", IntegerType(), True), StructField("gender", StringType(), True), StructField("occupation", StringType(), True), StructField("salary", DoubleType(), True) ])
在此步骤中,我们将创建列表行,然后形成数据框。
data = [("John", 25, "Male", "Developer", 5000.0), ("Jane", 30, "Female", "Manager", 7000.0), ("Bob", 35, "Male", "Director", 10000.0), ("Alice", 40, "Female", "CEO", 15000.0)]
我们根据我们在上述两个步骤中指定的模式和数据创建数据框,并在创建后显示数据框。
df = spark.createDataFrame(data, schema) df.show()
输出
以下是使用pyspark创建的数据框的输出。
------+---+------+----------+-------+
| name|age|gender|occupation| salary|
+-----+---+------+----------+-------+
| John| 25| Male| Developer| 5000.0|
| Jane| 30|Female| Manager| 7000.0|
| Bob| 35| Male| Director|10000.0|
|Alice| 40|Female| CEO|15000.0|
+-----+---+------+----------+-------+
现在,让我们看看在 PySpark 数据框中检查子字符串的每种方法。
使用 like() 或 rlike() 函数
在 PySpark 中,我们有两个函数like()和rlike();它们用于检查数据框的子字符串。like()函数用于检查任何特定列是否包含指定的模式,而rlike()函数则检查列中是否存在正则表达式模式。
from pyspark.sql.functions import col df = spark.createDataFrame(data, schema) df.show() df.where(col("occupation").like("%Developer%")).show() df.where(col("occupation").rlike(".*Developer.*")).show()
输出
like 和 rlike 函数的输出如下所示。
+-----+---+------+----------+-------+ | name|age|gender|occupation| salary| +-----+---+------+----------+-------+ | John| 25| Male| Developer| 5000.0| | Jane| 30|Female| Manager| 7000.0| | Bob| 35| Male| Director|10000.0| |Alice| 40|Female| CEO|15000.0| +-----+---+------+----------+-------+ +----+---+------+----------+------+ |name|age|gender|occupation|salary| +----+---+------+----------+------+ |John| 25| Male| Developer|5000.0| +----+---+------+----------+------+ +----+---+------+----------+------+ |name|age|gender|occupation|salary| +----+---+------+----------+------+ |John| 25| Male| Developer|5000.0| +----+---+------+----------+------+
使用 substr() 函数
此substr函数用于从列中提取子字符串,然后检查子字符串是否与指定的模式匹配。
from pyspark.sql.functions import col df = spark.createDataFrame(data, schema) df.show() df.where(col("occupation").substr(1, 5) == "Manag").show()
输出
pyspark中substr函数的输出如下所示。
+-----+---+------+----------+-------+ | name|age|gender|occupation| salary| +-----+---+------+----------+-------+ | John| 25| Male| Developer| 5000.0| | Jane| 30|Female| Manager| 7000.0| | Bob| 35| Male| Director|10000.0| |Alice| 40|Female| CEO|15000.0| +-----+---+------+----------+-------+ +----+---+------+----------+------+ |name|age|gender|occupation|salary| +----+---+------+----------+------+ |Jane| 30|Female| Manager|7000.0| +----+---+------+----------+------+