我试图从一个列表中创建一个简单的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
在输出来自?)
1条答案
按热度按时间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()
够了。