云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云存储_cdn网络_年度促销

小七 141 0

Edmunds的开放源代码数据库集成工具

这是数据工程技术主管Shaun Elliott和Edmunds的员工工程师Sam Shuster的客座帖子。什么是Databricks?它对Edmunds有何用处?Databricks是一个基于云的、完全管理的大数据和分析处理平台,它利用apachesparktm和JVM。Databricks统一分析平台的一大卖点是它将大数据和机器学习结合起来。Databricks通过以下几种方式降低了进入壁垒和/或处理大量数据所需的时间:Databricks笔记本电脑集群和就业创造多语言编程最后,Databricks由活动的apachespark提交者(包括许多原始创建者)操作。正因为如此,Edmunds不仅获得了优秀的Spark支持,还获得了该框架所提供的最新版本和特性。Databricks笔记本电脑Databricks笔记本电脑类似于Jupyter笔记本电脑,本质上是一个REPL,带有一个漂亮的Spark Web用户界面。它们允许快速的开发周期、代码的交互式测试,甚至可以将万亿字节(或更高)的数据集可视化范围。代码是通过webui编程的,或者您可以从IDE运行jar或eggs(注意:直接连接到IDE的承诺正在通过一个名为Databricks Connect的特性来实现,该特性目前正在私有预览中)。随着笔记本电脑成为数据工程组织标准的最新进展,我们很高兴看到"笔记本优先"方法的可能性。轻松集群和创造就业机会Databricks有一个易于使用的接口,用于创建集群,以运行交互式作业和调度作业。这消除了我们内部售票系统的许多操作障碍,提出一个可能几天只需几分钟的请求。其他的解决方案,如EMR,也正在通过Amazon控制台朝这个方向发展,但是要像Databricks一样易于使用,它们还有很长的路要走。其中很大一部分是Databricks更好的用户界面体验,它允许没有太多软件背景的用户在自己的Spark集群上快速启动。它甚至提供了易于配置的自动缩放和自动终止,这样可以节省宝贵的美元。Databricks的另一个独特优点是,它们可以提供最新版本的Spark,以及卓越的Spark支持和调优。作为一家公司,我们努力使用Spark框架编写所有新的数据工程项目,因此这是我们的一个关键考虑因素。多语言编程Databricks提供了从五种流行的编程语言中选择以获得结果的自由(注意,使用Java只是JAR形式)。笔记本支持的语言包括Scala、Python、R、SQL和Markdown。这为来自不同背景的人打开了大门。你不必再成为Scala或Java专家,拥有分布式编程的经验,才能开发出可伸缩的工作。在数据块上发展与大多数软件栈一样,软件工程师需要一组工具、库和过程,以允许他们遵循软件工程最佳实践。我们也一样,需要可靠的方法来开发和部署产品化代码到Databricks运行时环境。那么,为什么不提前建立这样一个系统呢?当我们在Edmunds引入Databricks时,我们的重点是允许轻松采用该框架,以说服用户Databricks可以在他们的工作中发挥重要作用。这意味着要强调达到尽可能快的速度。你可能会想知道,为什么我们要制定政策,可能会剥夺快速发展的势头,而快速发展一直被视为公司技术健康最重要的因素之一。与技术上的几乎所有事物一样,也需要权衡考虑。对于我们的Databricks环境,绝对没有操作检查和很少的标准,这意味着在生产时部署到Databricks的每个项目都变成了技术债务。这种债务随着时间的推移而累积起来,降低了团队的部署周期和所有数据块用户的部署速度。我们需要满足四类需求:环境标准用工作名称轻松追踪生产性工作创建透明的S3数据位置或表位置,以便轻松确定哪些表被生产化确保测试发生在质量保证阶段,而不是生产阶段源代码管理确保代码的编写方式便于工程师团队维护。建立执行单元测试的方法建筑与图书馆围绕创造就业机会制定具体标准,以进一步简化Databricks作业的创建和维护。操作建立一个评审集群创建的过程将"部署"方法扩展到生产中,而不仅仅是安排笔记本电脑我们建造了什么?首先,我想指出,我们不是第一个试图解决这个问题的团队。我们的广告解决方案团队已经开发了一个强大的Python解决方案。这包括用于在数据库中同步笔记本的脚本,以及一个标准化的工作区布局,它允许工作流的逻辑分离,如服务、配置管理和本地开发测试。我们在为JVM项目创建框架时提到了这个过程。该项目的目标是扩展我们在数据块方面的能力,同时还满足以下附加要求:理想情况下,该框架可以同时用于JVM语言项目和非JVM语言项目理想情况下,该框架将同时处理非笔记本和笔记本项目尽可能使用公司广泛使用的现有工具(如Maven、Kingpin[我们的内部部署UI]和Jenkins)以下是我们的产品:Java REST客户端(OSS!)我们选择只实现构建系统所需的函数和资源,但构建了一个允许附加功能的代码库。我们实现了以下功能:群集资源Dbfs资源工作资源图书馆资源工作区资源Maven插件(OSS!)可以上传代码到s3可以将库附加/分离到群集足够智能,可以根据需要重新启动群集。可以创建/编辑databricks作业使用一个模板模型,允许变量注入和智能默认值。可以启动/停止databricks作业可以导出/导入笔记本可以验证某些作业属性以确保它们符合标准Databricks公共库(封闭源代码)可以通过不同的源获取特定于应用程序和环境的运行时属性可以发射波前测量可以通过Oozie提交和监视Databricks作业主销[我们的内部部署用户界面]集成(封闭源代码)可以通过主销部署特定版本的databricks作业大致是什么样子?这给我们带来了什么?环境标准Maven插件验证作业名称以跟踪生产化作业Maven插件帮助我们将QA/PROD划分为各自的Databricks实例源代码管理所有代码(包括非笔记本和笔记本源代码)必须放入Git存储库中。建筑与图书馆在创建和维护数据块作业时制定了其他标准操作群集创建是手动完成的,未进行审阅通过创建集群描述作为gitlab项目的一部分,建立了一个代码评审过程。集群/作业是通过插件自动创建的"部署"到生产只是手动编辑笔记本通过Jenkins/Kingpin自动化生产部署为什么我们要开源REST客户端和Maven插件?在埃德蒙兹,我们相信开源技术。贡献我们所做的将有望让其他人改进他们使用数据块的方式,我们希望贡献者会回报我们的好意。你有兴趣吗?在这里,向其中一个"好的优先问题"提交请求。你对解决大数据问题或构建工具来授权软件工程师和数据科学家感兴趣吗?如果是的话,看看我们的空头头寸!今后的工作交互式集群管理——我们计划在我们的maven插件中添加一些功能,以满足那些想要自动管理交互式集群并对其创建进行编码的用户。环境属性和公共库——我们计划让这些为内部使用而开发的库变得更通用,这样我们就可以开源了。Databricks-Maven-Plugin-API-Cleanup-目前该API存在一些有机成长的问题,并且在设计方式上不一致。我们发布2.0.0的目标之一是使api更加用户友好。首先转向笔记本电脑——这是一个雄心勃勃的目标,它将寻求使笔记本电脑成为所有工作的切入点。pythoneggs和scalajars形式的库仍将用于包含公共功能,但所有特定于工作的代码都将包含在笔记本中。将我们的工作流与Databricks Connect集成将使笔记本的开发变得更加容易,并且消除了将本地笔记本代码与Databricks同步的需要。相反,可以将时间花在集成测试上,作为笔记本作业部署管道的一部分。 免费试用Databricks。今天就开始吧