如何在Python中创建示例Spark dataFrame?

Aji*_* Kb 9 apache-spark apache-spark-sql pyspark

我想创建一个示例数据框,但是以下代码不起作用:

df = spark.createDataFrame(["10","11","13"], ("age"))

## ValueError
## ...
## ValueError: Could not parse datatype: age
Run Code Online (Sandbox Code Playgroud)

预期结果是:

age
10
11
13
Run Code Online (Sandbox Code Playgroud)

hi-*_*zir 15

以下代码不起作用

对于单个元素,您需要一个模式作为类型

spark.createDataFrame(["10","11","13"], "string").toDF("age")
Run Code Online (Sandbox Code Playgroud)

DataType

from pyspark.sql.types import StringType

spark.createDataFrame(["10","11","13"], StringType()).toDF("age")
Run Code Online (Sandbox Code Playgroud)

带有名称的元素应该是元组和架构作为序列:

spark.createDataFrame([("10", ), ("11", ), ("13",  )], ["age"])
Run Code Online (Sandbox Code Playgroud)


Sar*_*ema 11

嗯.. 有一些非常简单的方法可以在 PySpark 中创建示例数据框

>>> df = sc.parallelize([[1,2,3], [2,3,4]]).toDF()
>>> df.show()
+---+---+---+
| _1| _2| _3|
+---+---+---+
|  1|  2|  3|
|  2|  3|  4|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)

用一些列名创建

>>> df1 = sc.parallelize([[1,2,3], [2,3,4]]).toDF(("a", "b", "c"))
>>> df1.show()
+---+---+---+
|  a|  b|  c|
+---+---+---+
|  1|  2|  3|
|  2|  3|  4|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)

这样,也不需要定义schema。希望这是最简单的方法


LN_*_*N_P 7

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([{"a": "x", "b": "y", "c": "3"}])
Run Code Online (Sandbox Code Playgroud)

输出:(无需定义架构)

+---+---+---+
| a | b | c |
+---+---+---+
|  x|  y|  3|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)


YOL*_*OLO 5

对于 pandas + pyspark 用户,如果您已经在集群中安装了 pandas,则可以简单地执行以下操作:

# create pandas dataframe
df = pd.DataFrame({'col1':[1,2,3], 'col2':['a','b','c']})

# convert to spark dataframe
df = spark.createDataFrame(df)
Run Code Online (Sandbox Code Playgroud)

本地 Spark 设置

import findspark
findspark.init()
import pyspark

spark = (pyspark
         .sql
         .SparkSession
         .builder
         .master("local")
         .getOrCreate())
Run Code Online (Sandbox Code Playgroud)