Exchange 2.0 导入timestamp类型属性报错

tag建表信息

create tag user(broadcast int, created_at timestamp)

Exchange相关tag配置

  tags: [
    {
      name: user
      type: {
        source: parquet
        sink: client
      }
      path: "hdfs://exchange-master:9000/user/hive/warehouse/user_info"
      fields: [broadcast, created_at]
      nebula.fields: [broadcast, created_at]
      vertex: id
      batch: 256
      partition: 32
      isImplicit: true
    }

parquet源数据

hive> describe user_info;
OK
id                  	int
broadcast           	int
created_at          	string

hive> select * from user_info;
OK
11	0	2020-11-01 00:00:11.0
22	0	2009-08-09T00:00:11.0

Exchange相关导入报错

21/01/27 15:52:20 INFO NebulaGraphClientWriter: INSERT VERTEX user(broadcast,created_at) VALUES "11": (0, 2020-11-01 00:00:11.0)
21/01/27 15:52:20 ERROR NebulaGraphClientWriter: write vertex failed for SyntaxError: syntax error near `00'
21/01/27 15:52:20 INFO NebulaGraphClientWriter: INSERT VERTEX user(broadcast,created_at) VALUES "22": (0, 2009-08-09T00:00:11.0)
21/01/27 15:52:20 ERROR NebulaGraphClientWriter: write vertex failed for SyntaxError: syntax error near `T00'
  • 看起来timestamp相关字段没有被正确地封装到INSERT语句中,这个需要如何配置呢?

这个timestamp字段在源数据里没有引号吗

对的,本身是string类型的,没有额外的引号

1.0的exchange支持数值型timestamp的, 没有支持"2021-01-01 00:00:00"形式的数据。

好的,目前2.0也是只支持数值型timestamp是吧?

是的

好的,多谢。我们这边对原始数据预处理一下。

我们2.0会增加对 数值型时间戳和"2021-01-01T00:00:00"格式时间戳的支持的,支持后欢迎使用~
@steam

2 个赞

在这个 pr 里我们支持了 string、long 类型时间戳哈,pr 参见:https://github.com/vesoft-inc/nebula-spark-utils/pull/23

1 个赞