【问题标题】:Why should I use the Airflow Hook instead the Python SDK for DataStore?为什么我应该使用 Airflow Hook 而不是 Python SDK for DataStore?
【发布时间】:2021-06-25 23:09:08
【问题描述】:

我的一些 Airflow 作业将使用 Google DataStore。从 Airflow 访问 DataStore 至少有两种明显的可能性:

python 库的使用在契约到钩子上要方便得多。它实现了人们需要的所有美好事物。钩子或多或少只是纯粹的 API 包装器。

但是,我想知道使用钩子而不是客户端库是否有一些优势。

【问题讨论】:

    标签: python google-cloud-platform airflow


    【解决方案1】:

    首先让我指出您指的是旧版本的 Hook。更新版本可以在提供程序包here 中找到。有关如何安装它的说明,请参阅此answer。 然后你可以将钩子导入为:

    from airflow.providers.google.cloud.hooks.datastore import DatastoreHook
    

    更新后的版本可能包含旧版本的 contrib hook 中缺少的功能。

    Hooks 的想法是包装 python 库,从而为您省去很多麻烦。例如:当您使用钩子时,您不需要处理设置连接。钩子会为你做到这一点。

    您始终可以直接使用 python 库,但我认为这是一种不好的做法。在不同的用例中使用同一个库是很常见的 - Hook 可以与多个运算符一起使用,从而为您节省大量代码重复。

    如果 Hook 中不存在 Python 库中的相关函数,您始终可以创建自定义 Hook - 从上游(开源)Hook 继承并使用它:

    from airflow.providers.google.cloud.hooks.datastore import DatastoreHook
    Class MyDatastoreHook(DatastoreHook)
          def missing_method(self):
              #wrap a function from the python lib
              conn = self.get_conn()
              function code
              
    

    【讨论】:

    • 感谢您的回答。我一直使用旧版本,因为由于某些原因我不得不坚持使用这个版本一段时间。我明白了有关连接设置的要点,尽管它也很容易与客户端库一起使用。可以说出更多的论据,为什么这是不好的做法,有什么缺点。
    猜你喜欢
    • 2012-05-11
    • 2016-05-23
    • 2013-10-11
    • 2018-05-10
    • 2014-03-12
    • 2012-12-13
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多