- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在与一家小公司合作,该公司将其所有应用程序数据存储在 AWS Redshift 集群中。我的任务是对该 Redshift 集群中的数据进行一些数据处理和机器学习。
我需要做的第一个任务是根据一些相当简单的 SQL 逻辑将该集群中的现有数据基本转换为一些新表。在 MSSQL 环境中,我会简单地将所有逻辑放入参数化存储过程中,并通过 SQL Server 代理作业对其进行调度。但是,sprocs 似乎与 Redshift 无关。我将如何着手创建 SQL 作业并安排它在 AWS 环境中每晚(例如)运行?
我的另一项任务涉及开发机器学习模型(使用 Python)并在该 Redshift 数据库中对记录进行评分。如果计划是从该 Redshift 集群中提取数据、对其评分,然后将其插入到同一集群上的新表中,那么托管我的 Python 逻辑和进行数据处理的最佳方式是什么?似乎我可以启动一个 EC2 实例,在那里托管我的 python 脚本,在那里进行处理,并安排脚本通过 cron 运行?
我看到大量看起来可能相关的 AWS(和非 AWS)产品(AWS Glue/Data Pipeline/EMR),但数量太多以至于我有点不知所措。在此先感谢您的帮助!
最佳答案
ETL
Amazon Redshift 不支持存储过程。另外,我应该指出,存储过程通常一件坏事,因为您将逻辑放入存储层,这使得将来很难迁移到其他解决方案。 (我知道许多 Oracle 客户将自己锁定在永远无法改变技术中!)
您应该在 Redshift 外部运行 ETL 逻辑,只需将 Redshift 用作数据库即可。这可能就像运行一个使用 psql
调用 Redshift 的脚本一样简单,例如:
`psql <authentication stuff> -c 'insert into z select a, b, from x'`
(使用 Redshift 所基于的 psql v8。)
或者,您可以使用更复杂的 ETL 工具,例如 AWS Glue (目前并非在每个区域)或第 3 方工具,例如 Bryte .
机器学习
是的,您可以在 EC2 实例上运行代码。如果它很小,您可以使用 AWS Lambda(最多 5 分钟运行时间)。许多 ML 用户喜欢在 Amazon EMR 上使用 Spark。这取决于您需要的技术堆栈。
Amazon CloudWatch Events 可以 schedule Lambda 函数,然后可以启动 EC2 实例来执行您的处理,然后自行终止。
确实有很多选择!
关于python - AWS Redshift 数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46618762/
我们可以直接将一张表从一个 Redshift 集群复制到另一个 Redshift 集群吗? 我知道可以使用 s3 作为临时存储来实现表复制(即从第一个集群卸载到 s3,然后从 s3 复制到另一个集群)
我在 AWS Redshift 集群中执行了以下操作以从 S3 读取 Parquet 文件。 create external schema s3_external_schema from data c
我在 AWS Redshift 集群中执行了以下操作以从 S3 读取 Parquet 文件。 create external schema s3_external_schema from data c
在 Amazon Redshift 中创建数据表时,您可以指定各种 encodings,例如 MOSTLY32 或 BYTEDICT 或 LZO。这些是在磁盘上存储列值时使用的压缩。 我想知道我选择的
我在 s3 中有一个压缩文件。我想将它插入到 RedShift 数据库中。我的研究发现做到这一点的唯一方法是启动一个 ec2 实例。将文件移到那里,解压缩,然后将其发送回 S3。然后将其插入到我的 R
为了在 Multi-Tenancy 维度 DW 中处理特定对象的自定义字段,我创建了 Redshift 不太喜欢的超宽非规范化维度表(数百列,列的硬编码限制);)。 user1|attr1|attr2
Redshift 文档将时间序列表确定为最佳实践: http://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-time-series
我正在使用 redshift 的 COPY 命令从 S3 复制 json 数据。 表定义如下: CREATE TABLE my_raw ( id BIGINT IDENTITY(1,1), ... .
如何获取导出的键(数据库元数据)。即使 redshift 不支持外键和主键,我也可以在系统表中看到它们。这里的问题是在系统表中,外键的多列作为数组存在于一列中(尽管redshift不支持数组)。是否可
我正在寻找一种创建 Redshift 查询的方法,该查询将从每天生成的表中检索数据。我们集群中的表具有以下形式: event_table_2016_06_14 event_table_2016_06_
在 Redshift 中,当我们将结果导入 TABLEAU 时,我们试图为从查询返回的列提供更有意义的别名,问题是 RedShift 将所有字母转换为小写字母,即从“事件日期” ” 然后它返回“事件日
据我了解,Redshift 是为性能而不是可用性而构建的。文档 https://aws.amazon.com/redshift/faqs/建议一旦任何一个节点宕机,整个集群都会宕机,直到该节点恢复。在
我试图找出与中止查询相关的原因/错误,其中可以从 STL_query 表中找到中止的查询。我为此使用了 STL_errors,但发现错误上下文与 process id 相关,而不是特定的查询 id。有
我们正在使用 AWS Redshift DB 并希望创建一个在线复制(这样也可以完全更新更改)? 原因是我们希望为我们的一个部门提供一个单独的环境来运行他们自己的查询,因为他们可能会“发疯”并做一些
我在使用 DataGrip 的 Redshift 集群上运行查询需要超过 10 个小时才能运行,不幸的是,这些查询经常失败。唉,DataGrip 与数据库的连接保持的时间不够长,我无法看到查询失败的错
我正在对 redshift 中的一些查询进行基准测试,以便我可以对我对表所做的更改进行一些智能说明,例如添加编码和运行 vacuum。我可以查询stl_query带有 LIKE 子句的表来查找我感兴趣
删除表后,redshift 是否回收可用磁盘空间,或者我们是否需要运行 vaccum。 最佳答案 drop table 释放空间。 如果您正在对表的行进行删除操作,那么您应该触发 vaccumm de
有没有办法在 Amazon Redshift 中计算具有固定窗口大小的加权移动平均值?更详细地说,给定一个带有日期列和值列的表,对于每个日期计算指定大小窗口的加权平均值,并在辅助表中指定权重。 到目前
我注意到第一次在 RedShift 上运行查询需要 3-10 秒。当我再次运行相同的查询时,即使在 WHERE 条件中使用不同的参数,它也会运行得很快(0.2 秒)。 我正在谈论的查询在一个约 1M
我明白 the COPY command非常有效地导入大量数据。但是使用 the INSERT command 将数据从一个表复制到另一个表是慢的。有没有更有效的方法将数据从一个表复制到另一个表?或者
我是一名优秀的程序员,十分优秀!