【问题标题】:AttributeError: 'NoneType' object has no attribute 'select' | PySparkAttributeError: 'NoneType' 对象没有属性 'select' | PySpark
【发布时间】:2021-11-07 22:08:05
【问题描述】:

这可能是一个非常基本的问题,因为我是 pyspark 的初学者。我已经阅读了一个 csv 文件并尝试在其上应用一些 pyspark 功能,如过滤、拆分或替换。但我面临一个错误 这是我的代码...

emp_data = spark\
            .read\
            .format('csv')\
            .option("inferSchema","true")\
            .option("header","true")\
            .load("/FileStore/tables/employee_earnings_report_2016-1.csv")

阅读文件后,我应用了过滤器..运行良好

import pyspark.sql.functions as f
df = emp_data.filter((f.col("POSTAL") == 2148) | (f.col("POSTAL") == 2125)).show(5)

+-----------------+-----------+-----+-------+----------+-------+------+-------------------------+--------------+------+------+
|             NAME|    REGULAR|RETRO|  OTHER|  OVERTIME|INJURED|DETAIL|QUINN/EDUCATION INCENTIVE|TOTAL EARNINGS|POSTAL|Gender|
+-----------------+-----------+-----+-------+----------+-------+------+-------------------------+--------------+------+------+
|    Abbasi,Sophia| $18,249.83|   NA|     NA|        NA|     NA|    NA|                       NA|    $18,249.83|  2148|     M|
|Abbruzzese,Angela|  $5,000.90|   NA|     NA|        NA|     NA|    NA|                       NA|     $5,000.90|  2125|     M|
| Abbruzzese,Donna|    $621.90|   NA|     NA|        NA|     NA|    NA|                       NA|       $621.90|  2125|     M|
|  Abdelrahim,Maha|  $1,181.60|   NA|     NA|        NA|     NA|    NA|                       NA|     $1,181.60|  2125|     M|
|   Abron,Wayne E.|$103,667.51|   NA|$550.00|$13,696.60|     NA|    NA|                       NA|   $117,914.11|  2125|     M|
+-----------------+-----------+-----+-------+----------+-------+------+-------------------------+--------------+------+------+

接下来我想在'NAME'列上应用拆分函数并提取名称的第一个索引..我正在这样做......

df_new = df.select(f.split(f.col("NAME"), ',')).show(3)

产生以下错误

AttributeError: 'NoneType' object has no attribute 'select'

我该如何解决这个错误?

【问题讨论】:

  • 您介意分享笔记本的链接吗?或共享 DataFrame

标签: python dataframe pyspark apache-spark-sql databricks


【解决方案1】:

问题发生的原因

df = emp_data.filter((f.col("POSTAL") == 2148) | (f.col("POSTAL") == 2125)).show(5)

在末尾添加 .show(5) 会将对象的类型从 pyspark DataFrame 更改为 NoneType

因此,当您使用 df_new = df.select(f.split(f.col("NAME"), ',')).show(3) 你得到错误AttributeError: 'NoneType' object has no attribute 'select'

更好的方法是使用:

df = emp_data.filter((f.col("POSTAL") == 2148) | (f.col("POSTAL") == 2125))
df.show(5)

您也可以使用display(df) 来设置样式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2021-12-26
    • 2019-07-23
    相关资源
    最近更新 更多