当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark SparkSession.createDataFrame用法及代码示例


本文简要介绍 pyspark.sql.SparkSession.createDataFrame 的用法。

用法:

SparkSession.createDataFrame(data, schema=None, samplingRatio=None, verifySchema=True)

RDD 、列表或 pandas.DataFrame 创建 DataFrame

schema 是列名列表时,将从 data 推断出每列的类型。

schemaNone 时,它将尝试从 data 推断架构(列名和类型),这应该是 Row namedtupledict 的 RDD。

schema pyspark.sql.types.DataType 或数据类型字符串时,必须与真实数据匹配,否则运行时会抛出异常。如果给定的模式不是 pyspark.sql.types.StructType ,它将被包装到 pyspark.sql.types.StructType 作为其唯一字段,并且字段名称将为 “value”。每条记录也将被包装成一个元组,以后可以转换为行。

如果需要模式推断,samplingRatio 用于确定用于模式推断的行的比率。如果 samplingRatioNone ,将使用第一行。

2.0.0 版中的新函数。

在 2.1.0 版中更改:添加了验证架构。

参数

dataRDD 或可迭代

任何类型的 SQL 数据表示形式的 RDD( Row tupleintboolean 等)、或 listpandas.DataFrame

schema pyspark.sql.types.DataType ,字符串或列表,可选

pyspark.sql.types.DataType 或数据类型字符串或列名列表,默认为无。数据类型字符串格式等于 pyspark.sql.types.DataType.simpleString ,除了顶级结构类型可以省略 struct<> 和原子类型使用 typeName() 作为它们的格式,例如使用 byte 而不是 tinyint pyspark.sql.types.ByteType 。我们也可以使用 int 作为 pyspark.sql.types.IntegerType 的简称。

samplingRatio浮点数,可选

用于推断的行的样本比率

verifySchema布尔型,可选

根据架构验证每一行的数据类型。默认启用。

返回

DataFrame

注意

spark.sql.execution.arrow.pyspark.enabled=True 的使用是实验性的。

例子

>>> l = [('Alice', 1)]
>>> spark.createDataFrame(l).collect()
[Row(_1='Alice', _2=1)]
>>> spark.createDataFrame(l, ['name', 'age']).collect()
[Row(name='Alice', age=1)]
>>> d = [{'name': 'Alice', 'age': 1}]
>>> spark.createDataFrame(d).collect()
[Row(age=1, name='Alice')]
>>> rdd = sc.parallelize(l)
>>> spark.createDataFrame(rdd).collect()
[Row(_1='Alice', _2=1)]
>>> df = spark.createDataFrame(rdd, ['name', 'age'])
>>> df.collect()
[Row(name='Alice', age=1)]
>>> from pyspark.sql import Row
>>> Person = Row('name', 'age')
>>> person = rdd.map(lambda r: Person(*r))
>>> df2 = spark.createDataFrame(person)
>>> df2.collect()
[Row(name='Alice', age=1)]
>>> from pyspark.sql.types import *
>>> schema = StructType([
...    StructField("name", StringType(), True),
...    StructField("age", IntegerType(), True)])
>>> df3 = spark.createDataFrame(rdd, schema)
>>> df3.collect()
[Row(name='Alice', age=1)]
>>> spark.createDataFrame(df.toPandas()).collect()  
[Row(name='Alice', age=1)]
>>> spark.createDataFrame(pandas.DataFrame([[1, 2]])).collect()  
[Row(0=1, 1=2)]
>>> spark.createDataFrame(rdd, "a: string, b: int").collect()
[Row(a='Alice', b=1)]
>>> rdd = rdd.map(lambda row: row[1])
>>> spark.createDataFrame(rdd, "int").collect()
[Row(value=1)]
>>> spark.createDataFrame(rdd, "boolean").collect() 
Traceback (most recent call last):
    ...
Py4JJavaError: ...

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.sql.SparkSession.createDataFrame。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。