如何在 Databricks 上使用 Apache Spark / Python 将整数转换为日期

Posted

技术标签:

【中文标题】如何在 Databricks 上使用 Apache Spark / Python 将整数转换为日期【英文标题】:How to convert integer into date using Apache Spark / Python on Databricks 【发布时间】:2021-10-07 22:29:12 【问题描述】:

我觉得比较简单的问题。尝试将整数列转换为纪元时间 (MM/DD/YYY)?

例如,转换 881250949 --> 12/04/1997

有什么建议吗?

【问题讨论】:

【参考方案1】:

使用from_unixtime和date_format函数,我们可以达到需要的结果:

SPARK_SCALA

  val spark = SparkSession.builder().master("local[*]").getOrCreate()
  import spark.implicits._
  import org.apache.spark.sql.functions._
  spark.sparkContext.setLogLevel("ERROR")

  // Sample dataframe
  val df = Seq(881250949).toDF("col")

  df.withColumn("col", date_format(from_unixtime('col), "MM/dd/yyyy"))
    .show(false)

+----------+
|col       |
+----------+
|12/04/1997|
+----------+

PYSPARK

from pyspark.sql import *
from pyspark.sql.functions import *

spark = SparkSession.builder.master("local").getOrCreate()

# Sample dataframe
df = spark.createDataFrame([(1,881250949)], "id int, date int")

df.withColumn("date", date_format(from_unixtime("date"), "MM/dd/yyyy"))\
    .show()
/*
+---+----------+
| id|      date|
+---+----------+
|  1|12/04/1997|
+---+----------+
*/

【讨论】:

感谢 Mohana 的及时回复。我认为您提供的回复中的语法有问题。相信 col 后面应该有一个 ' 抱歉,没有检查您询问代码的语言。在 scala 中,该语法有效。在 python 中,你应该用单/双引号将列名括起来。 我不断收到“from_unixtime”未定义的错误。任何想法如何明确定义它? 编辑帖子,添加 pyspark 代码。请看一看。 太棒了!太感谢了。我意识到我只需要执行以下操作: import pyspark.sql.functions as F F.date_format(F.from_unixtime("date"), "MM/dd/yyyy")).show()

以上是关于如何在 Databricks 上使用 Apache Spark / Python 将整数转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 apache spark 加载模块时出现 Databricks 错误 [重复]

获取 TypeError:在 Apache Spark / Databricks 中尝试流数据时,路径只能是单个字符串

使用多列更新 Apache Spark / Databricks 中的表

如何使用 Azure Synapse 在 Databricks 上删除表或删除行?

如何在 SQL 中使用 Apache Spark 制作第一行标题

尝试在 Databricks 上安装 H2O。如何在 Databricks 中安装 3rd 方包?