python - 标记点对象 pyspark 中的错误

标签 python apache-spark pyspark apache-spark-sql

我正在写一个函数

  1. 它将 RDD 作为输入
  2. 分割逗号分隔值
  3. 然后将每一行转换为标记点对象
  4. 最终以数据帧的形式获取输出

    code: 
    
    def parse_points(raw_rdd):
    
        cleaned_rdd = raw_rdd.map(lambda line: line.split(","))
        new_df = cleaned_rdd.map(lambda line:LabeledPoint(line[0],[line[1:]])).toDF()
        return new_df
    
    
    output = parse_points(input_rdd)
    

到目前为止,如果我运行代码,没有错误,它工作正常。

但是在添加该行时,

 output.take(5)

我收到错误:

org.apache.spark.SparkException: Job aborted due to stage failure: Task   0 in stage 129.0 failed 1 times, most recent failure: Lost task 0.0 in s    stage 129.0 (TID 152, localhost): org.apache.spark.api.python.PythonException: Traceback (most recent call last):

Py4JJavaError       Traceback (most recent call last)
<ipython-input-100-a68c448b64b0> in <module>()
 20 
 21 output = parse_points(raw_rdd)
 ---> 22 print output.show()

请告诉我错误是什么。

最佳答案

在执行操作之前没有错误的原因:

 output.take(5)

这是由于 Spark 的本质,它是惰性的。 即,在执行操作“take(5)”之前,spark 中不会执行任何操作

您的代码中有一些问题,我认为您由于 [line[1:]] 中额外的“[”和“]”而失败

所以你需要删除[line[1:]]中多余的“[”和“]”(只保留line[1:])

您可能需要解决的另一个问题是缺乏数据框架构。

即将“toDF()”替换为“toDF([“features”,“label”])” 这将为数据框提供一个架构。

关于python - 标记点对象 pyspark 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887157/

相关文章:

java - Mongodb map 减少与 Apache Spark map 减少

python - 来自 Hive 查询的持久 PySpark Dataframe

python - 使用 Phoenix 4.x 和 Python 2.x 从 Hbase 1.1 获取数据时出错

Pyspark - 如何从 DataFrame 列中获取随机值

python - 如何使用 RegExpTokenizer 排除所有小写字母 (a-z) 的组合?

java - Spark : Error While Writing DataFrame to CSV

python - Pandas - 按索引 ID 合并两个数据帧

python - Spark MLlib 推荐引擎的方法

python - 双pandas groupby操作,在外/内循环组之间进行成对比较

python - python 中的整数比较会使一切变慢