将 Spark 数据框中的时间戳转换为日期

2024-05-08

我见过(这里:如何将DataFrame中的时间戳转换为日期格式? https://stackoverflow.com/questions/40656001/how-to-convert-timestamp-to-date-format-in-dataframe)将时间戳转换为日期类型的方法,但是,至少对我来说,它不起作用。

这是我尝试过的:

# Create dataframe
df_test = spark.createDataFrame([('20170809',), ('20171007',)], ['date',])

# Convert to timestamp
df_test2 = df_test.withColumn('timestamp',func.when((df_test.date.isNull() | (df_test.date == '')) , '0')\
.otherwise(func.unix_timestamp(df_test.date,'yyyyMMdd')))\

# Convert timestamp to date again
df_test2.withColumn('date_again', df_test2['timestamp'].cast(stypes.DateType())).show()

但这会在列中返回 nulldate_again:

+--------+----------+----------+
|    date| timestamp|date_again|
+--------+----------+----------+
|20170809|1502229600|      null|
|20171007|1507327200|      null|
+--------+----------+----------+

知道什么地方失败了吗?


下列的:

func.when((df_test.date.isNull() | (df_test.date == '')) , '0')\
  .otherwise(func.unix_timestamp(df_test.date,'yyyyMMdd'))

不起作用,因为它的类型不一致 - 第一个子句返回string而第二个子句返回bigint。结果它总是会返回NULL if data is NOT NULL并且不为空。

它也已经过时了 - SQL 函数是NULL和格式错误的安全。无需进行额外检查。

In [1]: spark.sql("SELECT unix_timestamp(NULL, 'yyyyMMdd')").show()
+----------------------------------------------+
|unix_timestamp(CAST(NULL AS STRING), yyyyMMdd)|
+----------------------------------------------+
|                                          null|
+----------------------------------------------+


In [2]: spark.sql("SELECT unix_timestamp('', 'yyyyMMdd')").show()
+--------------------------+
|unix_timestamp(, yyyyMMdd)|
+--------------------------+
|                      null|
+--------------------------+

在 Spark 2.2 或更高版本中,您不需要中间步骤:

from pyspark.sql.functions import to_date

to_date("date", "yyyyMMdd")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Spark 数据框中的时间戳转换为日期 的相关文章

随机推荐

  • 使用特殊字符创建正则表达式

    我正在为 mongodb 创建一个查询 app get content title function req res var regexp new RegExp req params title i db find title regexp
  • 删除匿名监听器

    当尝试采用使用匿名或嵌套类实现侦听器的风格时 以便隐藏除侦听之外的其他用途的通知方法 即我不希望任何人能够调用actionPerformed 例如来自java动作监听器 实现与匿名类 https stackoverflow com ques
  • HTML-Entity 转义以防止 XSS

    我有一些用户输入 在我的代码中 我确保对以下符号进行转义 gt amp lt gt lt gt gt gt OWASP https www owasp org index php XSS 28Cross Site Scripting 29
  • 扑。如何检查自动续订订阅是否仍然有效

    我的应用程序有 1 个月的自动续订订阅 当用户单击 购买订阅 按钮时 我将购买日期保存到共享首选项中 然后 1 个月后 我需要检查该订阅是否仍然有效 那么我该如何实施呢 2020 年 3 月 11 日更新 你好 我可以看到那些正在寻找如何在
  • 从云函数在 Google Cloud Storage 中创建新的 csv 文件

    第一次使用 Google 云存储 下面我有一个云函数 每当 csv 文件上传到时就会触发该函数my folder在我的桶里 我的目标是在同一文件夹中创建一个新的 csv 文件 读取上传的 csv 的内容并将每一行转换为将进入新创建的 csv
  • 在 Alpine 中找不到运行时/cgo

    In an alpine edge我安装的容器通过 RUN apk add no cache musl dev go 我试着跑go get github com golang protobuf protoc gen go then 这会导致
  • 来自完整 HTML 文档的 jQuery 对象

    是否可以将完整的 HTML 文档解析为完整的 jQuery 对象 当我尝试时 例如 var tmp p test p console log tmp I get title p test 即一个数组 将所有头部的子项与所有身体的子项组合起来
  • 将数组传递给 json.stringify

    我试图将数组传递给 json stringify 但返回的值返回为空 JSON stringify json data returns json 这是数据的内容 data from email protected cdn cgi l ema
  • Capistrano 杀死资产:预编译

    我正在尝试部署我的应用程序 但我不断收到 err xxx xxx xx xxx bash line 1 9953 Killed bundle exec rake RAILS ENV production RAILS GROUPS asset
  • AWS lambda只读文件系统错误,使用docker镜像存储ML模型

    我在 lambda 上使用 docker 容器映像来运行我的 ML 模型 我的 lambda 函数有一个 S3 触发器来获取图像 我正在尝试运行 lambda 函数 但收到此错误 有人可以帮帮我吗 PS 现在我知道 tmp 是 lambda
  • 同时支持 CommonJS 和 AMD

    有没有办法创建一个 javascript 微型库 没有依赖项的库 支持以下所有模块格式 异步模块定义 CommonJS 将库的导出公开为全局命名空间对象 无加载程序 是的 我把这个答案归功于ded https github com ded
  • C# - 捕获 RTP 流并发送到语音识别

    我正在努力实现的目标 在 C 中捕获 RTP 流 将该流转发到 System Speech SpeechRecognitionEngine 我正在创建一个基于 Linux 的机器人 它将接受麦克风输入 将其发送给 Windows 机器 Wi
  • PlayFramework:如何转换 JSON 数组的每个元素

    鉴于以下 JSON values one two three 我如何在 Scala Play 中像这样转换它 values elem one elem two elem three 这很容易Play 的 JSON 转换器 https www
  • 启动 Java 时使用 -d32 和 -d64

    我阅读了以下摘录JDK 常见问题解答 http www oracle com technetwork java hotspotfaq 138619 html 64bit layering 如何在 32 位和 64 位操作之间进行选择 默认是
  • C++ 包装类的设计

    我必须使用一个界面非常笨拙的旧类 由于我无法更改它并且依赖它 因此我想构建一个包装器 提供一个干净的界面 假设我有课笨手笨脚的班级 基本上 我有三种方法 1 参考会员 Class Wrapper public Wrapper ClumsyC
  • 准备好的语句什么时候会失败? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直在搞乱MySQLi对象在PHP 并且习惯于在执行语句之前准备语句 到目前为止 我主要做了以下事情 if stmt mysqli
  • ImageMagick 更改图像宽度和高度

    我正在使用 ImageMagick 通过使用下面的命令行选项来调整图像分辨率 convert abc png set units PixelsPerInch density 75 abc a png 我需要这个 如果任何图像的宽度超过 30
  • 我应该向所有内容添加类/id,还是使用其他选择器

    我永远不确定选择元素的最佳 最有效 方法是什么 假设我有以下布局 非常简单的示例 div ul li Link 1 li li Link 2 li li Link 3 li ul div 我想选择我的无序列表 确保我不会影响整个网站中的任何
  • Matplotlib 未在前两个子图中显示 xlabel

    我编写了一个函数来在此处显示一些图表 def plot price series df ts1 ts2 price series line graph fig plt figure ax1 fig add subplot 221 ax1 p
  • 将 Spark 数据框中的时间戳转换为日期

    我见过 这里 如何将DataFrame中的时间戳转换为日期格式 https stackoverflow com questions 40656001 how to convert timestamp to date format in da