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

亚马逊云_aspnet虚拟主机_怎么样

小七 141 0

笔记本工作流:实现apachespark管道的最简单方法

[glossary_parse]今天我们很兴奋地宣布Databricks中的笔记本工作流。Notebook Workflows是一组API,允许用户使用源编程语言(Python、Scala或R)的标准控制结构将笔记本链接在一起,以构建生产管道。此功能使Databricks成为第一个也是唯一一个支持直接从笔记本电脑构建apachespark工作流的产品,为数据科学和工程团队提供了构建生产数据管道的新范式。传统上,团队需要集成许多复杂的工具(笔记本、Spark基础设施、外部工作流管理器等)来分析数据、原型应用程序,然后将它们部署到生产中。有了Databricks,所有事情都可以在一个环境中完成,使整个过程变得更简单、更快、更可靠。使用笔记本简化管道即使使用编译过的工件,笔记本在构建管道方面也非常有用。能够可视化数据并交互式地进行转换实验,这使得在小的、可测试的块中编写代码变得更加容易。更重要的是,大多数数据管道的开发都是从探索开始的,这是笔记本电脑的完美用例。另一方面,团队在使用笔记本电脑执行更复杂的数据处理任务时也会遇到问题:笔记本的逻辑变得更难组织。探索型笔记本从简单的Spark命令序列开始,这些命令按顺序运行。然而,根据生产流水线中先前步骤的结果做出决策是很常见的,这通常与最初勘探期间笔记本的编写方式不一致。笔记本不够模块化。团队需要能够只重试数据管道的一个子集,这样失败就不需要重新运行整个管道。这些是团队经常为生产重新实现笔记本代码的常见原因。重新实现的过程耗时、乏味,并且否定了笔记本电脑的交互特性。Databricks笔记本工作流我们重新审视了这个问题,决定需要一种新的方法。我们的目标是提供一个统一的平台,消除数据探索和生产应用程序之间的摩擦。我们开始时提供了一个完全管理的笔记本电脑环境,用于特别实验,以及一个作业调度器,允许用户通过一个简单的UI将笔记本直接部署到生产环境中。通过在这些现有功能的基础上添加笔记本工作流,我们为用户提供了从数据处理代码中创建复杂工作流的最快、最简单的方法。Databricks笔记本工作流是一组api,用于将笔记本链接在一起并在作业调度程序中运行它们。用户使用源编程语言(Python、Scala或R)的控制结构,直接在笔记本内部创建工作流。例如,可以使用if语句检查工作流步骤的状态,使用循环来重复工作,甚至可以根据步骤返回的值做出决策。这种方法比外部工作流工具(如apacheflow、Oozie、Pinball或Luigi)简单得多,因为用户可以在同一环境中从探索过渡到生产,而不是操作另一个系统。笔记本工作流由Databricks作业调度器监督。这意味着每个工作流都获得作业提供的生产功能,例如故障恢复和超时机制。它还利用了Databricks的版本控制和安全特性——通过GitHub帮助团队管理复杂工作流的演变,并通过基于角色的访问控制来保护对生产基础设施的访问。图:Databricks笔记本工作流是一组api,用于将Databricks笔记本链接在一起,并在作业调度程序中运行它们。图中突出显示的单元格显示了调用其他笔记本的API。如何使用笔记本工作流使用参数将笔记本作为工作流运行笔记本工作流最基本的操作是使用dbutils.notebook.run()命令。该命令在调用方笔记本所附加到的集群上运行笔记本,前提是您具有正确的权限(请参阅我们的ACLs文档以了解有关笔记本和群集级别权限的更多信息)。这个dbutils.notebook.run()命令还允许您将参数传入笔记本,如下所示:dbutils.notebook.run("./path/to/my/notebook",超时秒数=60,参数={"x":"value1","y":"value2",…})示例:在Databricks中运行笔记本获取返回值要创建更灵活的工作流,请dbutils.notebook.run()命令可以传回返回值,如下所示:状态=dbutils.notebook.run("../path/to/my/notebook",超时时间=60秒)这个dbutils.notebook.exit调用被调用方笔记本中的()命令时,需要使用字符串作为参数,如下所示:dbutils.notebook.exit(str(结果值))还可以通过引用存储在临时表中的数据来返回结构化数据,或者将结果写入DBFS(amazons3上的Databricks缓存层),然后返回存储数据的路径。控制流程和异常处理您可以使用Scala或Python中的标准if/then语句和异常处理语句来控制工作流的执行流并处理异常。例如:尝试:下一步=dbutils.notebook.run("DataImportNotebook",250,{"输入路径":importStagingDir})如果nextStep=="清洁":dbutils.notebook.run("清洁笔记本",500)其他:dbutils.notebook.run("ETLNotebook",3600)除e类例外:打印"导入数据时出错。"dbutils.notebook.run("错误笔记本",1500)还可以使用工作流执行重试,并在笔记本之间传递更复杂的数据。有关详细信息,请参阅文档。运行并发笔记本工作流使用Python和Scala中的内置库,可以并行启动多个工作流。这里我们展示了一个从Python笔记本并行运行三个ETL任务的简单示例。由于工作流与本机语言集成,因此可以用用户的首选语言表达任意并发和重试行为,这与其他工作流引擎不同。调试run命令返回指向作业的链接,您可以使用该链接深入研究性能并调试工作流。只需打开呼叫者笔记本并单击下面所示的被叫者笔记本链接,您就可以开始使用内置的Spark History UI向下钻取。下一步是什么有问题吗?你有什么建议想和别人分享吗?访问Databricks论坛并加入我们的用户社区。我们刚刚开始帮助Databricks用户构建工作流。在不久的将来,请继续关注更多功能。尝试通过今天注册Databricks试用版来构建工作流。你也可以在这里找到更详细的文档和演示。免费试用Databricks。今天就开始吧