不可变性与惰性计算

使用 PySpark 进行数据清洗

Mike Metzger

Data Engineering Consultant

变量回顾

Python 变量:

  • 可变
  • 灵活
  • 可能引发并发问题
  • 往往增加复杂性
使用 PySpark 进行数据清洗

不可变性

不可变变量:

  • 函数式编程的组成部分
  • 只定义一次
  • 不能被直接修改
  • 重新赋值会创建新对象
  • 可高效共享
使用 PySpark 进行数据清洗

不可变性示例

定义新的数据框:

voter_df = spark.read.csv('voterdata.csv')

进行更改:

voter_df = voter_df.withColumn('fullyear', 
    voter_df.year + 2000)

voter_df = voter_df.drop(voter_df.year)
使用 PySpark 进行数据清洗

惰性计算

  • 这不会很慢吗?
  • 转换(transformations)
  • 动作(actions)
  • 便于高效规划
voter_df = voter_df.withColumn('fullyear', 
    voter_df.year + 2000)
voter_df = voter_df.drop(voter_df.year)

voter_df.count()
使用 PySpark 进行数据清洗

Passons à la pratique !

使用 PySpark 进行数据清洗

Preparing Video For Download...