【问题标题】:Cassandra : COPY data with cql function on columnCassandra:在列上使用 cql 函数复制数据
【发布时间】:2019-02-04 12:51:31
【问题描述】:

我正在尝试从 cassandra 表中导出和导入数据,以将时间戳列更改为 unixepoch 列(即将时间戳输入为 bigint)

我尝试使用以下命令将数据导出到 csv

COPY raw_data(raw_data_field_id, toUnixTimestamp(dt_timestamp), value) TO 'raw_data_3_feb_19.csv' WITH PAGETIMEOUT=40 AND PAGESIZE=20;

但出现错误:Improper COPY command.

我该如何解决这个问题,或者有更好的方法来解决这个问题?

来自

 raw_data_field_id | dt_timestamp                    | value
-------------------+---------------------------------+-------
                23 | 2018-06-12 07:15:00.656000+0000 | 131.3

 raw_data_field_id | dt_unix_timestamp_epoch         | value
-------------------+---------------------------------+-------
                23 | 1528787700656                   | 131.3

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    COPY 命令不支持添加额外的函数来处理输出。

    我会说你有几个解决方案:

    • 使用 COPY 导出 csv 中的数据,转换时间戳值(使用 sh 命令或高级语言)并将其导入新表
    • 使用 echo "select raw_data_field_id, toUnixTimestamp(dt_timestamp), value from raw.raw_data;" | ccm node1 cqlsh > output.csv 导出,更改 csv 使其具有正确的格式并将其导入新表(此解决方案来自 here
    • 使用 Cassandra 驱动程序之一(python、java 等)编写您自己的转换工具。
    • 也许您可以尝试使用 UDF,但我尚未对此进行测试。

    您应该知道COPY FROM 支持少于 200 万行的数据集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-31
      • 2012-02-21
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2017-08-12
      相关资源
      最近更新 更多