elasticsearch - spark 在 elasticsearch 中写入时间戳

标签 elasticsearch apache-spark spark-dataframe

我从 jdbc 源读取数据并将其直接写入 Elasticsearch 索引。 当我查询 ES 中的数据时,我看到数据框中的所有时间戳字段都转换为 long

查看下面的代码

 val appName="ExractToolEngine"
 val master = "local[2]"
 val conf = new SparkConf().setAppName(appName).setMaster(master)
 conf.set("es.write.operation", "index")
 conf.set("es.mapping.id", "user_id")
 conf.set("index.mapper.dynamic", "true")
 conf.set("es.mapping.rich.date", "true")

  def main(args: Array[String]): Unit = {
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
    import sqlContext.implicits._

    val srcData = sqlContext.read.format("jdbc").
      options(Map("driver"->"com.jdbc.Driver",
      "url" -> "jdbc...",
      "dbtable"-> "tbl",
      "partitionColumn"-> "user_id",
      "lowerBound"-> "1",
      "upperBound"-> "1000000",
      "numPartitions"-> "50"
      )
).load()
    srcData.filter("user_id>=1 and user_id<=1000000").saveToEs("test_users/sm_1")

当我运行 srcData.printSchema()

我得到:

|-- dwh_insert_ts: timestamp (nullable = true)
|-- dwh_update_ts: timestamp (nullable = true)

当我在 http://localhost:9200/test_users/_mapping/sm_1 上查询索引映射时

我明白了

"properties": {
"dwh_insert_ts": {
"type": "long"
},
"dwh_update_ts": {
"type": "long"
},

是否有办法强制 elasticsearch 保留时间戳并进行转换?

最佳答案

关于elasticsearch - spark 在 elasticsearch 中写入时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38080330/

相关文章:

apache-spark - Spark 中 RowMatrix 的矩阵转置

apache-spark - 仅将每一行的非空列收集到数组中

hadoop - Spark parquet 数据帧分区数

pyspark - groupby 并使用 pyspark 将多列转换为列表

amazon-web-services - Elasticsearch 以使用Spark Submit将列值映射为ID

apache-spark - Elasticsearch 无法写入所有条目 : May be es was overloaded

elasticsearch - ElasticSearch查询以查找不匹配的记录

Elasticsearch : filter on scripted sum of filtered nested field

scala - 使用 Scala 将字符串转换为 Spark 的时间戳

scala - 在 Spark 中转换 dd-MMM-yy 日期格式