PySpark:无法创建小数据框

PySpark: Cannot create small dataframe

我正在尝试创建一个小数据框,以便我可以保存两个标量(双精度)和一个字符串

来自 How to create spark dataframe with column name which contains dot/period?

from pyspark.sql.types import StructType, StructField, StringType, DoubleType

input_data = ([output_stem, paired_p_value, scalar_pearson])

schema = StructType([StructField("Comparison", StringType(), False), \
                     StructField("Paired p-value", DoubleType(), False), \
                     StructField("Pearson coefficient", DoubleType(), True)])
df_compare_AF = sqlContext.createDataFrame(input_data, schema)
display(df_compare_AF)

产生错误信息:

TypeError: StructType can not accept object 's3://sanford-biofx-dev/con/dev3/dev' in type <class 'str'> 这对我来说没有任何意义,此专栏 意味着 用于字符串

我的另一个解决方案来自

columns = ["comparison", "paired p", "Pearson coefficient"]
vals = [output_stem, paired_p_value, scalar_pearson]

df = spark.createDataFrame(vals, columns)
display(df)

但这给出了一个错误:TypeError: Can not infer schema for type: <class 'str'>

我只想要一个小数据框:

comparison | paired p-value | Pearson Coefficient
-------------------------------------------------
s3://sadf  |   0.045        | -0.039

解决方案是在 input_data 末尾加上一个神秘的逗号,感谢@10465355 说 Reinstate Monica 来自 pyspark.sql.types 导入 StructType、StructField、StringType、DoubleType

input_data = ([output_stem, paired_p_value, scalar_pearson],)

schema = StructType([StructField("Comparison", StringType(), False), \
                     StructField("Paired p-value", DoubleType(), False), \
                     StructField("Pearson coefficient", DoubleType(), True)])
df_compare_AF = sqlContext.createDataFrame(input_data, schema)
display(df_compare_AF)

我不明白为什么这个逗号是必要的,或者它的作用,但它似乎可以完成工作