首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QueryDatabaseTable中在NiFi中执行多重选择*

在QueryDatabaseTable中在NiFi中执行多重选择*
EN

Stack Overflow用户
提问于 2018-12-14 21:12:57
回答 2查看 1.9K关注 0票数 0

我想执行Elasticsearch(Kibana).中的select * from table1select * from table2select * from table3、.select * from table80.(基本上从80个不同的表中提取数据并将数据发送给80个不同的索引)。

我是否可以在一个查询数据库表中提供多个select * statement,然后将其路由到不同的索引?如果是的话,流量会是怎样的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-14 23:24:52

有几种方法可以用来解决这个问题。

  • 如果您的表实际上是table1table2等,您可以简单地生成80个流文件,每个文件在属性中都有一个唯一的整数值(即table_count),并使用GenerateTableFetchExecuteSQL通过表达式语言使用该属性创建查询。
  • 如果表名是非顺序的(如usersaddresses等),则可以从列在一行上的文件中读取,或者使用ListDatabaseTables查询数据库中的名称。然后,您可以执行简单的文本处理,将创建的流文件拆分为每个表一个,并继续如上。
票数 1
EN

Stack Overflow用户

发布于 2018-12-14 23:21:58

QueryDatabaseTable不允许传入连接,所以它是not possible

但是,您可以使用以下流程实现相同的用例

流:

代码语言:javascript
复制
1. ListDatabaseTables
2. RouteOnAttribute //*optional* filter only required tables
3. GenerateTableFetch //to generate pages of sql queries and store state
4. RemoteProcessGroup (or) Load balance connection
5. ExecuteSql //run more than one concurrent task if needed
6. further processing
7. PutElasticSearch.

此外,如果您不想运行流incrementally,那么删除GenerateTableFetch处理器

  • 配置ExecuteSql处理器,选择查询作为 select * from ${db.table.schema}.${db.table.name}

一些有用的参考资料:

  • GenerateTableFetch link1 link2
  • 增量运行ExecuteSQL处理器而不使用GenerateTableFetch 链接
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53786949

复制
相关文章

相似问题

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