当前位置: 首页 > 知识库问答 >
问题:

在Spark+2.4中读取CSV时如何设置时间戳格式

唐利
2023-03-14

我在Azure上有一个Databricks5.3集群,它运行Apache Spark 2.4.0和Scala 2.11。

Timestamp, Name, Value
02/07/2019 14:51:32.869-08:00, BatteryA, 0.25
02/07/2019 14:55:45.343-08:00, BatteryB, 0.50
02/07/2019 14:58:25.845-08:00, BatteryC, 0.34
%scala

val csvDataFrame = sqlContext.read.format("csv")
  .option("header", "true")
  .option("treatEmptyValuesAsNulls", "true")
  .option("inferSchema", "true")
  .option("mode","DROPMALFORMED")
  .option("timestampFormat", "MM/dd/yyyy HH:mm:ss.SSSZZ")
  .load("path/to/file.csv")

csvDataFrame.printSchema()
csvDataFrame:org.apache.spark.sql.DataFrame
  Timestamp:string
  Name:string
  Value:double

我不是Java/Scala开发人员,也不熟悉Spark/Databricks。我找不到Spark用来解析值的datetime格式化程序。

我尝试的模式:

MM/dd/yyyy HH:mm:ss.SSSZZ
MM/dd/yyyy HH:mm:ss.SSSXXX

共有1个答案

吉凯捷
2023-03-14

事实证明,当读/写CSV文件时,Databricks文档提到了dateformat选项,但它没有做任何事情。正确的选项与Spark使用的选项相同,称为TimestampFormat

我的问题是由文件中的一个格式错误的行引起的。即使使用Dropmalform,这一行也会导致时间戳被解释为字符串。

 类似资料:
  • 如何将firestore时间戳更改为“2天前或1小时前”?我尝试直接显示它,但显示出来的数据是一个字符串,类似于。

  • 问题内容: 我最近一直在玩Go,它很棒。在浏览文档和博客文章之后,我似乎无法弄清楚的事情是如何将类型格式化为我想要的格式, 这是一个最小的代码示例: 理想情况下,我想发送一个请求并以类似的方式获取“戳记”字段,而不是 但是我不确定如何,我知道我可以添加到文档类型声明中以使用名称戳而不是戳来编码字段,但是我不知道这些类型的东西叫什么,所以我我什至不确定要在Google上查找什么,以了解其中是否还有某

  • 我想读Spark的CSV。所以我使用Java中的命令。 谢谢大家。

  • 我有问题设置行时间戳使用Java API。 当我试图将时间戳值添加到put构造函数(或put.add())中时,什么也不会发生,从表中读取行后,我会得到系统提供的时间戳。 在独立模式下运行的HBase 0.92.1。 提前感谢您的帮助!

  • 我有一个主要基于CET地区的项目。我在配置/app.php中设置了CET,但是基中的所有枢轴时间戳都存储在UTC时间? 如何设置时间戳的“全局”时区? 我做了这个测试: 结果是这样的: TNX Y

  • 当我使用Spark DataSet加载csv文件时。我更喜欢清楚地指定模式。但是我发现有几行不符合我的模式。一列应该是双精度的,但有些行是非数值。是否可以轻松地从DataSet中过滤所有不符合我的模式的行? f、 csv: 我更喜欢“a”可以很容易地从我的数据集中过滤出来。谢谢!