问题标签 [hortonworks-dataflow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hadoop - Apache Nifi 无法写入 HDFS
当我尝试使用 PutHDFS 处理器将文件放在 HDFS 上时,出现以下错误:
我使用 HortonWorks 沙箱 HDP 和 HDF(Windows 上的 docker 容器)。好像是Nifi的问题,HDFS没问题,可以放/写/读。
我正在尝试解决此问题,但没有结果,我删除了 docker 的 HDP 图像并获得了一个新图像,但也没有结果。
apache-nifi - NiFi中触发了FetchFolder?
我正在使用 NiFi 使用专有处理工具(在 NiFi外部运行)来编排大型二进制文件的处理。
NiFi 将源文件放在磁盘上,我调用外部工具(使用 ExecuteScript 处理器),该工具加载二进制文件并继续生成许多较小的文件。
当外部工具完全完成后,我需要“拾取”较小(生成)文件的目录并继续通过 NiFi 处理。我需要等待,因为 [输出目录]、[文件数] 和 [处理所需时间] 是动态的。
问题:
- GetFile(获取目录)没有上游连接,所以我无法在处理完成后触发它。
- ListFile + FetchFile 组合不起作用 b/c ListFile 没有上游连接,所以 - 再次 - 我无法在处理完成后触发它。
...那么,在完成二进制处理后,我可以使用什么处理器来获取新文件的目录并将它们带入 NiFi 领域?
apache - NiFi GenerateTableFetch 不存储每个 database.name 的状态
我正在测试 NiFi 以替换我们当前的摄取设置,该设置从表的多个 MySQL 分片导入数据并将其存储在 HDFS 中。
我正在使用GenerateTableFetch
并ExecuteSQL
实现这一目标。
每个传入的流文件都有一个database.name
属性,用于DBCPConnectionPoolLookup
选择相关的分片。
问题是,假设我有 2 个分片要从中提取数据,shard_1
对于shard_2
表帐户,我也有updated_at
as Maximum Value Columns
,它没有为table@updated_at
每个分片存储状态。状态中的每个表只有 1 个条目。
当我检查 Data Provenance 时,我看到 shard_2 流文件文件在没有传递给 ExecuteSQL 的情况下被删除。我的猜测是,这是因为 shard_1 查询首先执行,然后当 shard_2 查询到来时,它的记录会与 shard_1 的 updated_at 进行检查,并且由于它返回空,它会删除文件。
有没有人遇到过这个问题?还是我错过了什么?
apache-nifi - 调试复杂 NiFi 数据流的理想方法
根据我在使用 NiFi 构建一些 DB 摄取 PoC 后的理解,整个数据流作为流文件流运行。并且在任何特定时间,执行控制可以同时在一个或多个处理器上。
所以我真的很困惑如何为任何故障调试复杂的数据流。
当我们使用生产用例时,它会变得比这复杂得多。所以我有几个问题。
如何知道数据流的状态。如果假设 10 个分叉流文件中有 4 个
GenerateTableFetch
因数据库池错误而失败,我怎么知道哪些失败了,以及如何快速重放它们,而无需去数据来源并一一进行。有没有办法通过查看数据流来知道哪个处理器的流文件出现故障。
我对使用 NiFi 调试数据流有更多的疑虑/困惑,如果有人可以向我指出一些文档或分享最佳实践,那将很有帮助。
谢谢。
apache-nifi - 如何等待 GenerateTableFetch 查询完成
我的用例是这样的。我有一些 X 表要从 MySQL 中提取。我正在拆分它们SplitText
以将每个表放在一个单独的流文件中并使用GenerateTableFetch
and拉取ExecuteSQL
。
当所有表的导入完成时,我希望得到通知或采取其他措施。在SplitText
文本处理器中,我已将original
关系路由到Wait
on ${filename}
with target count ${fragment.count}
。这将跟踪完成了多少张表。
但是现在我无法弄清楚如何知道特定表何时完成。GenerateTableFetch
根据分区大小将流文件分成多个。但它没有写入像 fragment.count 这样的属性,我可以用它来等待每个表。
有没有办法可以做到这一点?或者,是否有办法在整个流程结束时知道流程中的所有流程文件是否都已处理,并且队列中没有任何内容或正在处理?
apache-nifi - 如何为处理器设置默认的“运行计划”
我GenerateFlowFile
经常使用处理器来测试其他处理器的行为并了解流程。但是每次,我都忘记更改默认的“运行计划”,默认为“0”。在我意识到它用数千个文件轰炸流程之前。
有没有办法改变默认值?有时真的很令人沮丧。
apache-nifi - GenerateTableFetch 在没有数据的情况下丢弃流文件进行查询
我正在使用GenerateTableFetch
包含table_name
导入数据的传入流文件。我已经手动使用表的列Additional WHERE clause
来处理增量更新。updated_at
问题是当构建查询没有要导入的数据时,它只是删除流文件。对于这种情况,除了成功和失败之外,它应该有一个单独的关系,这样如果必须为这种情况做些什么,我可以自己处理。
目前,在工作流程开始时,我正在使用Wait
已投入流程的表格数量并跟踪它们何时完成以使用Notify
. 但是对于被丢弃的表GenerateTableFetch
,它只是继续等待。
有什么办法处理这个吗?
apache-nifi - 清除处理器公告的方法
对于快速测试和开发,有一种方法可以从处理器的右上角清除公告确实很有帮助。一旦我看到错误并修复它,我想在重新启动之前清除它。
如果当前版本可以,请指导。