【问题标题】:How do I convert a numpy array to a pyspark dataframe?如何将 numpy 数组转换为 pyspark 数据框?
【发布时间】:2021-02-10 06:27:42
【问题描述】:

我想将我的 results1 numpy 数组转换为数据框。作为记录,results1 看起来像

array([(1.0, 0.1738578587770462), (1.0, 0.33307021689414978),
       (1.0, 0.21377330869436264), (1.0, 0.443511435389518738),
       (1.0, 0.3278091162443161), (1.0, 0.041347454154491425)]).

我想将上面的内容转换为 pyspark RDD,其列标记为“limit”(元组中的第一个值)和“概率”(元组中的第二个值)。

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('YKP').getOrCreate()
sc=spark.sparkContext
# Convert list to RDD
rdd = sc.parallelize(results1)

# Create data frame
df = sc.createDataFrame(rdd)

我不断收到错误

AttributeError: 'RemoteContext' object has no attribute 'createDataFrame'

当我运行它时。我不明白为什么这会给我一个错误,我该如何解决这个问题?

【问题讨论】:

  • createDataFrame 是 sqlContext 的一部分。 sqlContext = SQLContext(sc)

标签: python pyspark pyspark-dataframes


【解决方案1】:

请改用map()toDF()

import numpy as np

results1 = np.array([(1.0, 0.1738578587770462), (1.0, 0.33307021689414978),
       (1.0, 0.21377330869436264), (1.0, 0.443511435389518738),
       (1.0, 0.3278091162443161), (1.0, 0.041347454154491425)])

df = sc.parallelize(results1).map(lambda x: [float(i) for i in x])\
        .toDF(["limit", "probability"])

df.show()
+-----+--------------------+                                                    
|limit|         probability|
+-----+--------------------+
|  1.0|  0.1738578587770462|
|  1.0|  0.3330702168941498|
|  1.0| 0.21377330869436265|
|  1.0| 0.44351143538951876|
|  1.0|  0.3278091162443161|
|  1.0|0.041347454154491425|
+-----+--------------------+

【讨论】:

    【解决方案2】:

    最简单的方法是:

    df = rdd.map(lambda x: (x, )).toDF()
    df.show()
    

    您也可以参考这篇文章了解更多详情: Create Spark DataFrame. Can not infer schema for type: <type 'float'>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 2018-12-15
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多