如何在 PySpark 中检查某个对象是 RDD 还是 DataFrame?
RDD 是弹性分布式数据集的缩写,它是 PySpark 的基本抽象(不可变的对象集合)。RDD 是 PySpark 的主要构建块。它们被分成较小的块并分布在集群中的节点之间。它支持转换和操作。
PySpark 中的 DataFrame
DataFrame 是 Python 中一个二维带标签的数据结构。它用于数据操作和数据分析。它接受不同的数据类型,例如整数、浮点数、字符串等。列标签是唯一的,而行则用唯一的索引值标记,这有助于访问特定的行。
DataFrame 通常用于机器学习任务中,以操作和分析大型数据集。它们支持诸如过滤、排序、合并、分组和转换数据等操作。
PySpark 提供了一个名为 isinstance() 的函数,该函数有助于检查给定对象是 RDD 还是 DataFrame。
语法
以下是使用 isinstance() 函数的语法。
isinstance(data,rdd/dataframe)
其中,
Isinstance() 是用于查找数据是 RDD 还是 DataFrame 的函数
data 是输入数据
安装 PySpark
首先,我们必须使用以下代码在 Python 环境中安装 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) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 281.4/281.4 MB 5.3 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting py4j==0.10.9.5 Downloading py4j-0.10.9.5-py2.py3-none-any.whl (199 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 199.7/199.7 KB 28.1 MB/s eta 0:00:00 Building wheels for collected packages: PySpark Building wheel for PySpark (setup.py) ... done Created wheel for PySpark: filename=PySpark-3.3.2-py2.py3-none-any.whl size=281824028 sha256=184a9a6949d4be5a4746cd53cb28d40cf38a4771048f5f14445d8ee4ab14a07c Stored in directory: /root/.cache/pip/wheels/6c/e3/9b/0525ce8a69478916513509d43693511463c6468db0de237c86 Successfully built PySpark 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
在使用 isinstance() 函数之前,我们必须创建数据,即 DataFrame 或 RDD。
from PySpark.sql importmSparkSession from PySpark.sql.types import * spark = SparkSession.builder \ .appName("substring check") \ .getOrCreate() schema = StructType([ StructField("name", StringType(), True), StructField("age", IntegerType(), True), StructField("gender", StringType(), True), StructField("occupation", StringType(), True), StructField("salary", DoubleType(), True) ]) df = [("John", 25, "Male", "Developer", 5000.0), ("Jane", 30, "Female", "Manager", 7000.0), ("Bob", 35, "Male", "Director", 10000.0), ("Alice", 40, "Female", "CEO", 15000.0)] data = spark.createDataFrame(df, schema) df.show()
输出
+-----+---+------+----------+-------+ | 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| +-----+---+------+----------+-------+
示例
在以下示例中,我们将数据与格式名称 RDD 或 DataFrame 一起传递给 PySpark 的 isinstance() 函数。
from PySpark.sql import DataFrame from PySpark.rdd import RDD if isinstance(data, RDD): print("The given data is an RDD") elif isinstance(data, DataFrame): print("The given data is a DataFrame") else: print("The given data is neither an RDD nor a DataFrame")
输出
The given data is a DataFrame
示例
在以下示例中,我们将列表数据结构传递给 isinstance() 函数。
from PySpark.sql import DataFrame from PySpark.rdd import RDD data = [22,1,14,5,12,5,7,2,24,2,21,11] if isinstance(data, RDD): print("The given data is an RDD") elif isinstance(data, DataFrame): print("The given data is a DataFrame") else: print("The given data is neither an RDD nor a DataFrame")
输出
The given data is neither an RDD nor a DataFrame
广告