如何在Python中创建示例单列Spark数据帧?
我想创建一个示例单列数据帧,但以下代码不起作用:如何在Python中创建示例单列Spark数据帧?,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我想创建一个示例单列数据帧,但以下代码不起作用: df=spark.createDataFrame([“10”、“11”、“13”],(“年龄”)) ##数值误差 ## ... ##ValueError:无法分析数据类型:年龄 预期结果: 年龄 10 11 13 我使用just spark.read在python中创建了一个数据帧,如中所述,例如,将数据另存为json并按如下方式加载: df = spark.read.json("examples/src/main/resources
df=spark.createDataFrame([“10”、“11”、“13”],(“年龄”))
##数值误差
## ...
##ValueError:无法分析数据类型:年龄
预期结果:
年龄
10
11
13
我使用just spark.read在python中创建了一个数据帧,如中所述,例如,将数据另存为json并按如下方式加载:
df = spark.read.json("examples/src/main/resources/people.json")
以下代码不起作用
对于单个元素,您需要一个模式作为类型
spark.createDataFrame(["10","11","13"], "string").toDF("age")
或数据类型
:
from pyspark.sql.types import StringType
spark.createDataFrame(["10","11","13"], StringType()).toDF("age")
With name元素应为元组,模式为序列:
spark.createDataFrame([("10", ), ("11", ), ("13", )], ["age"])
嗯。。有一些非常简单的方法可以在PySpark中创建示例数据帧
>>> df = sc.parallelize([[1,2,3], [2,3,4]]).toDF()
>>> df.show()
+---+---+---+
| _1| _2| _3|
+---+---+---+
| 1| 2| 3|
| 2| 3| 4|
+---+---+---+
使用某些列名创建
>>> df1 = sc.parallelize([[1,2,3], [2,3,4]]).toDF(("a", "b", "c"))
>>> df1.show()
+---+---+---+
| a| b| c|
+---+---+---+
| 1| 2| 3|
| 2| 3| 4|
+---+---+---+
这样,就不需要定义模式了。希望这是最简单的方法
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([{"a": "x", "b": "y", "c": "3"}])
输出:(无需定义架构)
对于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)
本地火花设置
你也可以试试这样的东西-
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc) # sc is the spark context
sample = sqlContext.createDataFrame(
[
('qwe', 23), # enter your data here
('rty',34),
('yui',56),
],
['abc', 'def'] # the row header/column labels should be entered here
创建数据帧有几种方法,这是您在使用PySpark时学习的第一步 我假设您已经有了数据、列和RDD
1) df = rdd.toDF()
2) df = rdd.toDF(columns) //Assigns column names
3) df = spark.createDataFrame(rdd).toDF(*columns)
4) df = spark.createDataFrame(data).toDF(*columns)
5) df = spark.createDataFrame(rowData,columns)
除此之外,您还可以在查看我的库中找到几个示例,以使用假数据创建数据帧:
import-farsante
df=farsante.quick_pyspark_df(['first_name','last_name',]7)
df.show()
以下是创建PySpark数据帧时如何显式指定架构:
df=spark.createDataFrame(
[(10,), (11,), (13,)],
StructType([StructField(“some_int”,IntegerType(),True)])
df.show()
“对于单个元素,您需要一个模式作为类型”这正是我所缺少的,谢谢
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc) # sc is the spark context
sample = sqlContext.createDataFrame(
[
('qwe', 23), # enter your data here
('rty',34),
('yui',56),
],
['abc', 'def'] # the row header/column labels should be entered here
1) df = rdd.toDF()
2) df = rdd.toDF(columns) //Assigns column names
3) df = spark.createDataFrame(rdd).toDF(*columns)
4) df = spark.createDataFrame(data).toDF(*columns)
5) df = spark.createDataFrame(rowData,columns)
+----------+---------+
|first_name|last_name|
+----------+---------+
| Tommy| Hess|
| Arthur| Melendez|
| Clemente| Blair|
| Wesley| Conrad|
| Willis| Dunlap|
| Bruna| Sellers|
| Tonda| Schwartz|
+----------+---------+
+--------+
|some_int|
+--------+
| 10|
| 11|
| 13|
+--------+