自从十年前在加州大学伯克利分校成立以来,Apache Spark已经起火了。这种分布式内存数据处理平台扼杀了面向批处理,基于磁盘的MapReduce,作为Hadoop,云对象存储数据湖和Kafka流平台的首选引擎。更令人惊讶的是,它正在成为数据仓库领域的一个固定装置,取代传统的提取,转换,加载(ETL)工具,作为填充现代云数据仓库的手段。
主要原因是性能。通过主要处理内存中的数据,Spark避免了不必要的I / O往返磁盘,与之前的产品相比,延迟了几个数量级。另一个原因是开发人员友好。 Spark对Scala,Java,Python和R编程语言的灵活支持鼓励了许多编码团队将其构建到数据湖和流媒体环境中,以便解决机器学习等高级分析用例。对于批处理或流式工作负载,Spark越来越成为首选引擎,由第三个或更多企业部署。
许多EDW团队现在在Spark上运行ETL作业,以提高性能并满足业务的新分析要求。这对于新的云选项特别有吸引力,例如Snowflake的SQL数据仓库,它与Spark平台和Botebook提供商Databricks有着密切的合作关系。当您需要快速,高效地分析大型和不断增长的数据集时,其中一些符合ACID标准,Spark-EDW组合才有意义。
与任何计划一样,Spark-EDW的推出需要严格的规划和执行。本文根据众多企业部署的成功经验和教训提供了一些指导原则。我欢迎你的想法和反馈。
仔细定义您的业务用例。
要回答的第一个问题不是如何设计数据架构,或者是否以及如何使用Spark,而是要准确了解业务用户想要做出的决策。他们是否需要为在线购物者量身定制下一个最佳报价建议,降低欺诈风险或支持运营报告仪表板?指定您的分析问题会形成以下所有内容 - 架构设计,实施过程,Spark配置参数等。(有关“业务发现”与您的数据策略之间相互作用的见解,请查看Dave Well的新博客“The Scope and Complexities of数据战略。“)
清点必要的数据集。
上面的每个用例都很好地映射到数据仓库结构,每个用例都需要数据集和数据类型的独特组合。由购买事件触发的下一个最佳商品推荐的输入可能包括该客户的在线和店内购买历史,他们在供应商网站上的点击流历史以及具有类似简档的客户的预先建立的购买模式。 Spark可以将这些部分加载并转换为统一的,通常格式化的数据集,以便在像雪花这样的EDW中实时推荐或定期分析。在混合中添加其他输入,例如实时跟踪客户的移动购买或应用程序使用情况,可能需要新的收集器或其他组件。
考虑高级算法的作用。
机器学习可以通过自学来改进基于所选择的,经常调整的特征或可变输入的预测来提高上述每个用例的准确性。您输入ML的数据和处理能力越多,它就越有效,这对整体架构设计和规划具有重要意义。 (另请参阅我在Jordan Martz撰写的文章“机器学习数据管理最佳实践”。)
选择您的数据仓库。
Spark可以叠加到传统系统上,以加快您现有的速度。但是现有的基于云的EDW(例如Snowflake和Azure SQL DW)可能会带来更多好处,许多企业已经开始采用这些EDW来更好地吸收快速增长的数据量,种类和速度。这些平台在资源弹性,解耦计算存储可扩展性和经济定价方面具有优势,可以非常有效地为大型Spark友好型工作负载提供服务。
在ETL中定义Spark的角色。
对于具有大型数据集的ETL,Spark性能和吞吐量优势是理想的选择。 Spark可以加速ETL处理,例如通过使用一组编码命令在内存中组合和执行这三个任务(提取,转换和加载)。它还可以简化ELT,这意味着数据一旦到达目标就被提取,加载然后转换。此外,Spark可以帮助发现大数据源,识别数据模式和分类,在提取之前和/或它们在目标上进行整合。所有这些都有助于在EDW环境中更有效地构建和管理新数据类型。
尽可能外包整合工作。
您还可以考虑预先打包的选项,例如Azure Databricks,它可以为您提供开箱即用的许多云,EDW和Spark集成步骤。虽然供应商 - Spark分发版本可能缺少Apache社区的最新功能,但额外的测试通常会使它们更稳定。 Databricks提供经过审查的Spark解决方案,开发人员笔记本,ML框架,管道生产力工具,与各种环境的培训和API集成。 (另请查看我的文章“使用变更数据捕获和Spark的实时数据管道的最佳实践。”)
计划分阶段实施。
与任何雄心勃勃的数据计划一样,Spark EDW项目(内部部署或基于云计算)需要基于陡峭学习曲线的有条理的迭代方法。如果选择在基于云的DW平台上进行现代化,则可能需要将本地数据和元数据迁移到新的DW中,然后创建,调整或移植现有的ETL框架。许多组织从测试试点开始,然后随着时间的推移扩展其云数据集和用例。机器学习需要多个测试阶段,其中软件从训练数据中学习,然后逐步将预测应用于生产数据。这些步骤中的每一步都需要资源和时间要求。
定义您的技能和培训要求。
大多数数据仓库经理都具有ETL和SQL脚本编写工作的长期经验,因此可以更轻松地使用Spark SQL模块执行SQL查询。但是这些传统的DW类型不太熟悉Java,Scala,Python和R,它们是开发Spark作业所需的主要语言。在许多情况下,他们需要新的培训或新的人员(如数据科学家)将Spark应用于数据仓库。
很难低估使用Spark实现数据仓库环境现代化的优势,这就解释了为什么有这么多企业走这条路。 他们在这里总结的经验教训可以成为那些刚开始的人的有用标志。
原文:https://www.eckerson.com/articles/sparking-data-warehouse-modernization
微信公众号:
最新内容
- 12 hours ago
- 14 hours ago
- 14 hours ago
- 3 days 5 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 14 hours ago
- 1 week ago
- 1 week ago