【问题标题】:Failing pipelines for DynamoDB cross-region incremental copyingDynamoDB 跨区域增量复制的失败管道
【发布时间】:2014-05-03 05:06:09
【问题描述】:

我正在尝试实现从 us-east-1 到 us-west-1 的跨区域复制。

我使用 Amazon Data Pipeline 中的跨区域复制模板每隔几个小时复制一个表,但是我无法让增量复制工作。我必须填写 DefaultHiveCopyActivity1 下的活动下的过滤 SQL 字段。该表包含一个名为 timestamp 的列,它是一个格式为 yyyy-MM-dd HH:mm:ss.SSS 的字符串,其中包含请求的时间。

我一直在尝试将字符串转换为 unix_timestamp 并从 unix_timestamp 的当前值中减去 7200(因为管道活动应该每两小时运行一次,因此在表中找到时间戳为 2 小时前的每条记录向前)。我使用这个过滤器 SQL 字段值:unix_timestamp(timestamp, "yyyy-MM-dd HH:mm:ss.SSS") > unix_timestamp() - 7200 管道失败。

我什至尝试检查一个简单的请求,例如将以下内容放入 Filter SQL 字段(它自己添加反斜杠):timestamp = \"2014-04-30 22:55:41.301\" - 根据我应该输入的文档:Hive SQL 语句筛选要复制的 DynamoDB 或 Amazon S3 数据子集的片段。过滤器应仅包含谓词,而不应以 WHERE 子句开头,因为 AWS Data Pipeline 会自动添加它。即使表中有具有该确切值的记录,此管道也会失败。但是,从一个区域到另一个区域的完整表副本没有 SQL 过滤器可以正常工作。

这是我得到的错误:FAILED: Parse Error: line 2:131 cannot recognize input near 'timestamp' ',' '"yyyy-MM-dd HH:mm:ss.SSS"' in function specification

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-crossregionddbcopy.html http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-hivecopyactivity.html

【问题讨论】:

    标签: sql amazon-web-services amazon-dynamodb hiveql amazon-data-pipeline


    【解决方案1】:

    HiveQL 查询中的时间戳字段应该像这样反引号,因为时间戳似乎是 Hive 中的一个关键字,而时间戳列名称被引用:unix_timestamp(`timestamp`, "yyyy-MM-dd HH:mm:ss.SSS") > unix_timestamp() - 7200

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2020-06-24
      • 2019-11-30
      • 2012-08-23
      • 1970-01-01
      • 2016-01-23
      • 2012-11-08
      相关资源
      最近更新 更多