當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。