【问题标题】:Cassandra bulk load dsbulk - Timestamp format issueCassandra 批量加载 dsbulk - 时间戳格式问题
【发布时间】:2019-02-24 11:35:01
【问题描述】:

我正在尝试使用 dsbulk 实用程序将 csv 文件加载到 cassandra。 我遇到了时间戳格式问题。

Source  : dance,204b0700-7214-3809-9da1-fe5499113b20,1953-08-26 10:00:00+0000,Roman Holiday,,,\u000a
java.lang.IllegalArgumentException: Could not parse '1953-08-26 10:00:00+0000'; accepted formats are: temporal string (e.g. '2018-09-20T07:52:19.921Z') or numeric value (milliseconds since 1970-01-01T00:00:00Z)

Suppressed: java.text.ParseException: Invalid number format: 1953-08-26 10:00:00+0000
Suppressed: java.time.format.DateTimeParseException: Text '1953-08-26 10:00:00+0000' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 0
Caused by: java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 0

输入文件的格式如下:

cat videos_by_tag.csv.mini2
customs house,d4acc6b9-f9b8-708e-5f7e-9df19a24bf5a,2001-07-12 10:00:00+0000,The Score,,,
dance,204b0700-7214-3809-9da1-fe5499113b20,1953-08-26 10:00:00+0000,Roman Holiday,,,
dance,262ebef4-0626-4758-d0cd-4b72ad1526a7,2000-09-21 10:00:00+0000,Dancer in the Dark ,,,
dance,3eea5ebb-6be2-9bdc-68e2-cabf89070855,2015-02-16 08:00:00+0000,Blue,,,
family estate,5b2eb210-b092-3f9c-de29-ea388b5964ae,1993-10-18 10:00:00+0000,The House of the Spirits ,,,

我尝试覆盖时间戳格式选项。没有帮助。

codec.timestamp = "yyyy-mm-dd HH:MM:SS+NNNN"

版本

  • DSE 版本:6.0.0
  • DataStax 批量加载:v1.0.1
  • 卡桑德拉:4.0.0.2284

表结构:

CREATE TABLE killrvideo.videos_by_tag ( tag text, videoid uuid, added_date timestamp, name text, preview_image_location text, tagged_date timestamp, userid uuid, PRIMARY KEY (tag, videoid) ) WITH CLUSTERING ORDER BY (videoid ASC)

请指教。

【问题讨论】:

  • 可以分享dsbulk版本、cassandra版本和表结构吗?
  • 其实是dse版本而不是cassandra。
  • dse -v : 6.0.0; DataStax 批量加载程序 v1.0.1;卡桑德拉 4.0.0.2284 ; CREATE TABLE killrvideo.videos_by_tag(标签文本,videoid uuid,added_date 时间戳,名称文本,preview_image_location 文本,tagged_date 时间戳,userid uuid,主键(标签,videoid))与聚类顺序(videoid ASC)谢谢。
  • 您是否尝试过使用 dsbulk 1.2.0?使用 1.2.0 导入成功。使用 1.0.1 时,我遇到了同样的错误。我对documentation 做了一些研究,似乎只支持少数几种模式。因此,如果无法使用另一个 dsbulk version,您可以做的一件事是更改时间戳格式 - 而不是 1953-08-26 10:00:00+0000 您应该使用 1953-08-26T10:00:00 +00
  • 非常感谢霍里亚。使用新版本解决了这个问题。你可以请张贴它是一个答案。另外,又遇到了一个问题。如果该列定义为 set ,则复制命令成功加载 "{'bible', 'moses', 'ramses'}" & "{'televison'}" 。但是,当 com.datastax.driver.core.exceptions.InvalidTypeException 有多个值时,dsbulk 会失败:无法解析为 Json。你遇到过这个问题吗?

标签: cassandra datastax-enterprise


【解决方案1】:

您是否尝试过使用 dsbulk 1.2.0?使用 1.2.0 导入成功。

在使用 1.0.1 时,我遇到了同样的错误。

我对@9​​87654321@ 做了一些研究,似乎只支持少数时间戳模式。

所以会有两种可能的解决方案:

  • 使用dsbulk 1.2.0 version
  • 重新格式化您的 csv 文件并更改时间戳格式;例如,您应该使用 1953-08-26T10:00:00+00 而不是 1953-08-26 10:00:00+0000。

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 2017-04-02
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多