apache-spark - 如何在DataFrame中使用具体时间戳填充无值?

标签 apache-spark pyspark apache-spark-sql

我使用 Spark 2.1 和 python 2.7.12。

假设如下:

from pyspark.sql.functions import *
import timestamp

data = [Row(time=datetime.datetime(2017, 1, 1, 0, 0, 0, 0)), Row (time=datetime.datetime(1980, 1, 1, 0, 0, 0, 0)), Row(time=None) ]

df = spark.createDataFrame(data)

使用方法 df.fillna({'time': datetime.datetime(1980, 1, 1, 0, 0, 0, 0)})填写 null特定时间的值/秒?

最佳答案

你可以试试 coalesce :

from pyspark.sql.functions import *
default_time = datetime.datetime(1980, 1, 1, 0, 0, 0, 0)
result = df.withColumn('time', coalesce(col('time'), lit(default_time)))

或者,如果您想继续使用 fillna ,您需要以标准格式将默认值作为字符串传递:

from pyspark.sql.functions import *
default_time = '1980-01-01 00:00:00'
result = df.fillna({'time': default_time})

关于apache-spark - 如何在DataFrame中使用具体时间戳填充无值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43995736/

相关文章:

python - 在 pyspark 中广播大型数组(~ 8GB)

apache-spark - 带有 Hive Metastore 3.1.0 的 Apache Spark 2.3.1

java - 如何在 Apache Spark Pipeline 中打印最佳模型参数?

java - 基于现有 Dataset<Row> 和添加的 HashMap 创建新的 Spark Dataset<Row>

apache-spark - 用于在 Kubernetes 上运行 Spark 时指定容忍度的 Pod 模板

apache-spark - MapReduce 还是 Spark?

apache-spark - to_date 无法解析 Spark 3.0 中的日期

group-by - 如何在 Pyspark 数据框中分组后收集 map ?

python - 将 DataFrame 中的新派生列从 bool 值转换为整数

dataframe - Spark中DataFrame、Dataset、RDD的区别