我希望外面的人能帮我解决这个问题。我目前正在从事一个数据管道项目,我目前的两难处境是与雅典娜一起使用拼板,还是将其存储到Redshift。
2种情况:第一,
EVENTS --> STORE IT IN S3 AS JSON.GZ --> USE SPARK(EMR) TO CONVERT TO PARQUET --> STORE PARQUET BACK INTO S3 --> ATHENA FOR QUERY --> VIZ第二,
EVENTS --> STORE IT IN S3 --> USE SPARK(EMR) TO STORE DATA INTO REDSHIFT与此设想有关的问题:
关于哪种方法更好,我找不到有用的信息。我应该使用红移还是地板足够好?
另外,如果有人能告诉我是否还有其他方法来连接Redshift,那就太好了,因为我在网上只看到了2种解决方案-- JDBC和spark (Databricks)
定价模型不是我所关心的,我也在处理数百万的事件数据。
发布于 2019-03-08 08:06:24
以下是一些想法/建议
我提议的架构:
事件->将信息存储在S3中->蜂巢转换为拼花->直接在雅典娜使用
和/或
事件->将IT存储在S3中->蜂巢转换为拼板->使用红移谱直接在红移中使用
如果您使用正确的分区结构(s3文件夹)并对数据进行gzip,那么雅典娜/频谱的性能就可以足够好,而不需要转换到拼板的复杂性。这取决于您的用例(需要运行的数据量和查询类型)。
发布于 2019-03-08 08:07:20
使用哪一个取决于您的数据和访问模式。雅典娜直接使用S3键结构来限制要扫描的数据量。假设事件中有事件类型和时间。S3键可以是yyyy/MM/dd/type/*或type/yyyy/MM/dd/*。前一个键结构允许您限制按日期或日期和类型扫描的数据量,但不能仅限于类型。如果您只想按x类型进行搜索,但不知道日期,则需要进行完整的桶扫描。后一个关键模式则相反。如果你主要只需要用一种方式访问数据(例如按时间),雅典娜可能是一个不错的选择。
另一方面,Redshift是一个基于PostgreSQL的数据仓库,它比雅典娜更加复杂和灵活。数据分区在性能方面起着很大的作用,但是模式可以通过多种方式来设计,以适应您的用例。根据我的经验,将数据加载到Redshift的最佳方法是先将数据存储到S3,然后使用COPY COPY.html。它比JDBC快多个数量级,我发现JDBC只适合用少量数据进行测试。这也是将数据加载到Redshift中的方式。如果您不希望自己实现S3复制,则Firehose提供了一种替代方法。
发布于 2019-06-19 05:16:40
这个问题很少有细节遗漏。如何管理数据管道中的增量插入。
如果您已经实现了缓慢更改的维度(SCD类型1或2),则不能使用拼花文件来管理相同的维度。但在Redshift中,这是很容易管理的。
https://stackoverflow.com/questions/55056640
复制相似问题