【问题标题】:Convert RDD into Dataframe in pyspark在pyspark中将RDD转换为Dataframe
【发布时间】:2018-09-14 15:08:41
【问题描述】:

我正在尝试将我的 RDD 转换为 pyspark 中的 Dataframe。

我的 RDD:

[(['abc', '1,2'], 0), (['def', '4,6,7'], 1)]

我想要数据框形式的 RDD:

Index Name Number
 0    abc   [1,2]
 1    def   [4,6,7]

我试过了:

rd2=rd.map(lambda x,y: (y, x[0] , x[1]) ).toDF(["Index", "Name" , "Number"])

但我遇到了错误

 An error occurred while calling 
z:org.apache.spark.api.python.PythonRDD.runJob.
: org.apache.spark.SparkException: Job aborted due to stage failure: 
Task 0 in stage 62.0 failed 1 times, most recent failure: Lost task 0.0 
in stage 62.0 (TID 88, localhost, executor driver): 
org.apache.spark.api.python.PythonException: Traceback (most recent 
call last):

你能告诉我,我哪里出错了吗?

更新:

rd2=rd.map(lambda x: (x[1], x[0][0] , x[0][1]))

我的 RDD 格式为:

[(0, 'abc', '1,2'), (1, 'def', '4,6,7')]

要转换为数据框:

rd2.toDF(["Index", "Name" , "Number"])

它仍然给我错误:

An error occurred while calling o2271.showString.
: java.lang.IllegalStateException: SparkContext has been shutdown
at org.apache.spark.SparkContext.runJob(SparkContext.scala:2021)
at org.apache.spark.SparkContext.runJob(SparkContext.scala:2050)

【问题讨论】:

  • 你能发布完整的错误日志,包括Traceback之后的内容吗?

标签: python apache-spark dataframe pyspark rdd


【解决方案1】:

RDD.map 采用一元函数:

rdd.map(lambda x: (x[1], x[0][0] , x[0][1])).toDF(["Index", "Name" , "Number"])

所以你不能通过二进制一。

如果要拆分数组:

rdd.map(lambda x: (x[1], x[0][0] , x[0][1].split(","))).toDF(["Index", "Name" , "Number"])

【讨论】:

  • 它仍然给我错误:调用 z:org.apache.spark.api.python.PythonRDD.runJob 时出错。 :org.apache.spark.SparkException:作业因阶段失败而中止:阶段 4.0 中的任务 0 失败 1 次,最近失败:阶段 4.0 中丢失任务 0.0(TID 5,本地主机,执行程序驱动程序):org.apache.spark .api.python.PythonException: Traceback(最近一次调用最后一次)
猜你喜欢
  • 2021-06-29
  • 2016-05-29
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多