为什么需要嵌套pyspark.sql.sparksession.createdataframe的数据参数?

3gtaxfhh  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(268)

我试图从一个列表中创建一个简单的Dataframe,并希望理解其中的逻辑。
我的第一次尝试是

import pyspark
sc: pyspark.SparkContext = pyspark.SparkContext(master='local[*]', appName='TestApp')
spark = pyspark.sql.SparkSession.builder.getOrCreate()
df = spark.createDataFrame([1, 2], schema=['a', 'b'])

这提高了 TypeError: Can not infer schema for type: <class 'int'>. 从看一个例子开始,我把最后一行改为

df = spark.createDataFrame([[1, 2]], schema=['a', 'b'])

这给了我预期的结果:

+---+---+
|  a|  b|
+---+---+
|  1|  2|
+---+---+

None

有人能解释一下为什么我必须嵌套数据参数吗?
(不太相关的附带问题:政府在哪里 None 在输出来自?)

sdnqo3pr

sdnqo3pr1#

好吧,spark api就是这样工作的。列表中的每一项都应表示一行,形式为list/tuple/dict [1, 2] ,那么你是说第1行是1,第2行是2,这是没有意义的。你想让第一排 [1, 2] ,因此将行放入列表中 [[1, 2]] .
你可能用过 print(df.show()) . df.show() 它将自己打印出Dataframe,并返回 None ,所以你打电话来 print(None) . 所以你才看到 None . 只是在做 df.show() 够了。

相关问题