首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bonobo_sqlalchemy连接Bonobo中的交叉数据库

使用bonobo_sqlalchemy连接Bonobo中的交叉数据库
EN

Stack Overflow用户
提问于 2020-04-14 20:45:16
回答 1查看 191关注 0票数 0

我一直试图在Bonobo中加入不同的数据源(MySQL和PostgreSQL),但到目前为止,我一直在努力应对paralelism,而bonobo是否是最适合这样做的工具?

我知道我可以用这样的方法获取Bonobo数据

代码语言:javascript
复制
def get_graph(**options):
    graph = bonobo.Graph()
    graph.add_chain(
        bonobo_sqlalchemy.Select('SELECT * FROM table', limit=100, engine='psql'),
        ...,
    )

    return graph

但是,在我的情况下,atm真正需要的是用另一个表中的另一个数据加入这个获取(这可能是dask/熊猫中的一种连接)。

我知道我可以用这样的方法获取Bonobo数据

代码语言:javascript
复制
def get_graph(**options):
    graph = bonobo.Graph()
    graph.add_chain(
        bonobo_sqlalchemy.Select('SELECT * FROM table', limit=100, engine='psql'),
        fetch_mysql_and_join_data,
        ...,
    )

    return graph

在我看来,这有两个问题:

在类似bonobo的并行/分布式获取中连接这样的表是没有意义的;sqlalchemy的

  • bonobo实现是为使用构建的

我怎么能让它起作用呢?我应该换个工具吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-07 12:38:56

我发现自己与继承的Bonobo项目有类似的问题。对我来说,有两种可能的解决办法:

  1. 在链的第二步中,您可以从MySQL服务中获取每个相关实体,根据需要“加入”或合并数据,并将其输出到下一个节点。
  2. 放弃了bonobo_sqlalchemy提供的读取器的使用,将“mysql”和“psql”服务注入初始提取转换中,并自己进行获取/连接。

第一种方法是最容易实现的,但它会产生N+1选择,而且速度可能慢得令人无法忍受。第二种方法可能具有更高的性能,但如果您正在处理足够大的数据集,它还可能要求您自己管理数据流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61216921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档