微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Spark 读取 Elasticsearch 记录时时间戳无效

如何解决使用 Spark 读取 Elasticsearch 记录时时间戳无效

在使用 Spark 和 elasticsearch-hadoop 库读取 Elasticsearch 记录时,我得到了无效的时间戳。我正在使用以下 Spark 代码读取记录:

val sc = spark.sqlContext
  val elasticFields = Seq(
    "start_time","action","category","attack_category"
  )

  sc.sql(
    "CREATE TEMPORARY TABLE myIndex " +
      "USING org.elasticsearch.spark.sql " +
      "OPTIONS (resource 'aggattack-2021.01')" )

  val all = sc.sql(
    s"""
      |SELECT ${elasticFields.mkString(",")}
      |FROM myIndex
      |""".stripMargin)
  all.show(2)

导致以下结果:

+-----------------------+------+---------+---------------+
|start_time             |action|category |attack_category|
+-----------------------+------+---------+---------------+
|1970-01-19 16:04:27.228|drop  |udp-flood|DoS            |
|1970-01-19 16:04:24.027|drop  |others   |DoS            |
+-----------------------+------+---------+---------------+

但我期待当前年份的时间戳,例如 2021-01-19 16:04:27.228。在弹性中,start_time 字段具有以毫秒为单位的 unixtime 格式 -> start_time": 1611314773.641

解决方法

问题在于 ElasticSearch 中的数据。 start_time 字段被映射为 epoch_seconds 并包含具有三个小数位的值纪元秒(例如 1611583978.684)。在我们将纪元时间转换为没有任何小数位的毫秒后,一切正常

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?