将“MM/dd/yyyy HH:mm”形式的字符串转换为 Spark 数据帧中的 joda 日期时间

2024-04-02

我正在读取 csv 文件,其中一列中有一个应转换为日期时间的字符串。该字符串的形式为MM/dd/yyyy HH:mm。但是,当我尝试使用 joda-time 对其进行转换时,我总是收到错误:

线程“main”中的异常 java.lang.UnsupportedOperationException:不支持 org.joda.time.DateTime 类型的架构

我不知道具体是什么问题...

 val input = c.textFile("C:\\Users\\AAPL.csv").map(_.split(",")).map{p => 
      val formatter: DateTimeFormatter = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm");
      val date: DateTime = formatter.parseDateTime(p(0));
      StockData(date, p(1).toDouble, p(2).toDouble, p(3).toDouble, p(4).toDouble, p(5).toInt, p(6).toInt)
}.toDF()

有谁可以帮忙吗?


我不知道具体是什么问题...

嗯,问题的根源几乎可以通过错误消息来描述。 Spark SQL 不支持 Joda-TimeDateTime作为输入。日期字段的有效输入是java.sql.Date (see Spark SQL 和 DataFrame 指南,数据类型供参考 http://spark.apache.org/docs/latest/sql-programming-guide.html#data-types).

最简单的解决办法就是调整StockData类所以需要java.sql.Data作为参数并替换:

val date: DateTime = formatter.parseDateTime(p(0))

像这样的东西:

val date: java.sql.Date = new java.sql.Date(
  formatter.parseDateTime(p(0)).getMillis)

or

val date: java.sql.Timestamp = new java.sql.Timestamp(
  formatter.parseDateTime(p(0)).getMillis)

如果你想保留小时/分钟。

如果您考虑使用带有 range 子句的窗口函数,更好的选择是将字符串传递给 DataFrame 并将其转换为整数时间戳:

import org.apache.spark.sql.functions.unix_timestamp

df.withColumn("ts", unix_timestamp($"date", "MM/dd/yyyy HH:mm"))

See Spark 窗口函数 - rangeBetween 日期 https://stackoverflow.com/q/33207164/1560062了解详情。

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

将“MM/dd/yyyy HH:mm”形式的字符串转换为 Spark 数据帧中的 joda 日期时间 的相关文章

随机推荐

  • 添加到类内的列表

    我有这门课 public class User private string name public string UserName get set public List
  • 我可以在没有 Visual Studio 的情况下使用 Visual C++ 编译器吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有什么方法可以从命令行使用 Visual C 或 Visual C 编译器而无需安装 Visual Studio 我以前也试过 没找到 寻
  • MongoDB 和 C# Find()

    我有下面的代码 我是 mongodb 的新手 我需要帮助来查找集合中的特定元素 using MongoDB Bson using MongoDB Driver namespace mongo console public class Use
  • 是否可以通过 Elasticsearch 中的映射来更新索引中的现有字段?

    我已经创建了一个索引 它包含我的数据MySQL数据库 我有几个字段string在我的表中 我需要它们作为不同的类型 integer double in Elasticsearch 所以我知道我可以通过mapping如下 mappings m
  • UITableViewController 和 UITextField 键盘

    我有一个带有分组静态 UITableView 的 UITableViewController 我正在故事板上定义静态表视图的单元格 其中一个单元格中有一个文本字段 当调用此文本字段时 键盘会弹出 但是 表视图不会像表视图控制器上通常那样自动
  • 泛型类型不相等

    下面的代码段打印出 类型不相同 为什么 我知道使用interfaceOnMyType GetGenericTypeDefinition 可以解决问题 但为什么我必须这样做呢 class Program static void Main st
  • :active 时的样式按钮与 :hover 不同

    我想制作一个按钮 在悬停时显示背景颜色 在按钮按下时显示没有背景颜色的按钮颜色 这是我当前的代码 windowButton hover background color 1a82b8 windowButton active windowCl
  • 如何在 Cypress 中点击 x 次

    我的网站上有一个对象列表 所有对象旁边都有 添加 按钮 单击第一个 添加 按钮时 将添加该对象 并且该行消失并被下一个对象取代 对象名称相同 在保存之前 我想 click 三次以添加列表中的前三个对象 我怎样才能做到这一点 我知道 clic
  • 带有页眉和页脚的 uiwebview

    我正在尝试添加页眉和页脚 它们都是UIViews 但由于某种原因我的页脚粘在底部 我正在使用KVO查看我的内容大小的方法 我在这里介绍我认为问题所在的方法 void updateLayout Update the frame of the
  • 如何在aws lambda中添加mecab库

    我正在尝试将 mecab 库添加到 aws lambda 层 但它不起作用 我想要的是标记日语和韩语 标记化就足够了 这就是我所做的 我参考了这个网站 https towardsdatascience com how to install
  • 使用字符串输入引用模型

    假设我希望创建一个可以使用 type string 和 id int 查询所需对象的页面 query type people id 1 会来接我 人物查找 1 whereas 查询 类型 城市 id 123 会来接我 城市查找 123 但是
  • MPI 是否提供预处理器宏?

    MPI 标准是否提供了预处理器宏 因此如果我的 C C 代码由支持 MPI 的编译器编译 它可以分支吗 就像是 OPENMPOpenMP 的宏 根据MPI标准 http www mpi forum org docs mpi 3 0 mpi3
  • 如何让 Mathematica 内核暂停以创建外部文件

    是否可以在计算期间暂停 Mathematica 内核 这是一个例子 Module Mathematica code Calls an external program with some argument Needs to wait for
  • C++ 从函数指针数组调用函数

    我使用存储在数组中的函数指针 并使用 typedef 定义指针 但我对如何调用该函数有点迷失 这是 Menu h 部分 typedef void Menu FunctionPointer FunctionPointer m funcPoin
  • 如何在本机 Android 应用程序开发中使用 OpenStreetMap [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您好 我的 Android 手机中有默认的 Android 虚拟内容 本机应用程序构建 现在我需要使用
  • Spark 中广播对象的最大大小是多少?

    使用数据框时播送 http spark apache org docs 2 0 0 api java org apache spark sql functions html broadcast org apache spark sql Da
  • 如何在vim的ex模式下从缓冲区粘贴?

    我在从文件复制某些文本然后将其复制到新的拆分窗口时遇到问题 3yy 新 p 在命令模式下它的工作 当我按下时 复制后分割窗口中的 p 它的工作 我理解您想要 拉出当前缓冲区中的当前行和下面的两行 在新的水平分割中打开一个空缓冲区并 将这三行
  • 使用“boot”包进行引导的 GPU 计算

    我想使用引导程序进行大型分析 我发现使用并行计算提高了引导速度 如以下代码所示 并行计算 detect number of cpu library parallel detectCores library boot boot functio
  • JavaFX 任务线程未终止

    我正在编写一个 JavaFX 应用程序 我的对象扩展了 Task 以提供远离 JavaFX GUI 线程的并发性 我的主要课程如下所示 public class MainApp extends Application Override pu
  • 将“MM/dd/yyyy HH:mm”形式的字符串转换为 Spark 数据帧中的 joda 日期时间

    我正在读取 csv 文件 其中一列中有一个应转换为日期时间的字符串 该字符串的形式为MM dd yyyy HH mm 但是 当我尝试使用 joda time 对其进行转换时 我总是收到错误 线程 main 中的异常 java lang Un