我正在尝试实现从 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