- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是的!我提出这个问题是为了分享我的知识和问答风格,因为我自己很难找到它:)
感谢https://stackoverflow.com/a/67821482/1561441 (Barbaros Özhan,查看评论)为我指明了正确的方向
最佳答案
如果我错了请纠正我,但是:哇,据我所知,目前 GitHub 上有一个 .java 文件,最后一次提交是在 2017 年,它包含 JOLT 语法官方文档的相关部分。我不得不使用它的语法,因为我正在使用 NiFi 并应用它的 JoltTransformJSON 处理器(因此我的问题中的 SEO 滥用,所以更多的人找到了答案)
以下是从 https://github.com/bazaarvoice/jolt/blob/master/jolt-core/src/main/java/com/bazaarvoice/jolt/Shiftr.java 复制的一些最相关的部分并略作编辑。文档本身更广泛,还显示了示例。
'*' Wildcard
- Valid only on the LHS ( input JSON keys ) side of a Shiftr Spec
- The '*' wildcard can be used by itself or to match part of a key.
'&' Wildcard
- Valid on the LHS (left hand side - input JSON keys) and RHS (output data path)
- Means, dereference against a "path" to get a value and use that value as if were a literal key.
- The canonical form of the wildcard is "&(0,0)".
- The first parameter is where in the input path to look for a value, and the second parameter is which part of the key to use (used with * key).
- There are syntactic sugar versions of the wildcard, all of the following mean the same thing; Sugar : '&' = '&0' = '&(0)' = '&(0,0)
- The syntactic sugar versions are nice, as there are a set of data transforms that do not need to use the canonical form, eg if your input data does not have any "prefixed" keys.
'$' Wildcard
- Valid only on the LHS of the spec.
- The existence of this wildcard is a reflection of the fact that the "data" of the input JSON, can be both in the "values" and the "keys" of the input JSON
- The base case operation of Shiftr is to copy input JSON "values", thus we need a way to specify that we want to copy the input JSON "key" instead.
- Thus '$' specifies that we want to use an input key, or input key derived value, as the data to be placed in the output JSON.
- '$' has the same syntax as the '&' wildcard, and can be read as, dereference to get a value, and then use that value as the data to be output.
- There are two cases where this is useful
- when a "key" in the input JSON needs to be a "id" value in the output JSON, see the ' "$": "SecondaryRatings.&1.Id" ' example above.
- you want to make a list of all the input keys.
'#' Wildcard
- Valid both on the LHS and RHS, but has different behavior / format on either side.
- The way to think of it, is that it allows you to specify a "synthentic" value, aka a value not found in the input data.
- On the RHS of the spec, # is only valid in the the context of an array, like "[#2]".
- What "[#2]" means is, go up the three levels and ask that node how many matches it has had, and then use that as an index in the arrays.
- This means that, while Shiftr is doing its parallel tree walk of the input data and the spec, it tracks how many matches it has processed at each level of the spec tree.
- This useful if you want to take a JSON map and turn it into a JSON array, and you do not care about the order of the array.
- On the LHS of the spec, # allows you to specify a hard coded String to be place as a value in the output.
- The initial use-case for this feature was to be able to process a Boolean input value, and if the value is boolean true write out the string "enabled". Note, this was possible before, but it required two Shiftr steps.
'@' Wildcard
- Valid on both sides of the spec.
- The basic '@' on the LHS.
- This wildcard is necessary if you want to put both the input value and the input key somewhere in the output JSON.
- Thus the '@' wildcard is the mean "copy the value of the data at this level in the tree, to the output".
Advanced '@' sign wildcard
- The format is lools like "@(3,title)", where "3" means go up the tree 3 levels and then lookup the key "title" and use the value at that key.
关于json - 有 JOLT 文档吗? &、@ 等运算符的含义是什么? (NiFi, JoltTransformJSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67822607/
我在 docker 中运行 NiFi,所有相关目录都安装为卷。我正在尝试修改 nifi.properties 文件中的一些设置,特别是添加自定义属性文件。但是,当我重新启动 NiFi 时,某些属性会恢
我们有多个团队 nifi 应用程序在同一台 nifi 机器上运行...有什么方法可以记录特定于我的应用程序的日志吗?此外,默认情况下 nifi-app.log 文件很难跟踪问题,公告板仅显示 5 分钟
有了这个功能,现在有两个执行引擎---无状态和有状态,但我不确定它们分别适合哪些场景? 当我想方便地更新一个或多个参数时,使用steteless执行引擎和命令行?如果我需要查看流程状态,在Nifi U
这个问题说明了一切。我怎样才能做以下事情之一: 如何限制在集群范围内为一个处理器运行的并发任务数? 我运行的节点是否有任何唯一的短 ID?我可以使用这些 ID 附加到要加载的数据库表名(请参阅下面的详
我在 HDF 2.1.1 的集群模式下使用 NIFI 1.1.0,并且禁用了数据来源,知道如何启用它吗? 在我的独立版本中它是默认启用的。 最佳答案 您的独立实例和集群之间的主要区别在于您的集群是安全
我正在尝试将一个非常简单的多部分表单发布到 api。我在 apache Nifi 中看不到任何这样做的方法,因为它似乎只有一个表单数据输入。在这里和 Nifi 论坛上似乎有很多关于此的现有问题,但没有
随着流程在开发、测试和生产阶段的进展,我们正在努力找出更新处理器配置的最佳方法。当流部署到特定环境时,我们真的希望避免在处理器中操纵主机、端口等引用。至少在我们的例子中,我们将有不同的主机用于 Ela
我对 Nifi 及其功能以及它的适当用例有疑问。 我读过 Nifi 的真正目标是创建一个允许基于流的处理的空间。在玩弄 Nifi 之后,我也开始意识到它能够以对我有用的方式对数据进行建模/塑造。 Ni
我们有多个(50 多个)nifi 流,它们基本上都做同样的事情:从数据库中提取一些数据,将一些列附加到 parquet 并上传到 hdfs。它们仅在细节上有所不同,例如要运行的 sql 查询或它们在
我一直在尝试 google 和搜索堆栈以寻找答案,但一直找不到。 使用 NiFi,是否可以在之前的作业失败时停止进程? 我们有需要处理的用户数据,但数据是按顺序构造的,因此如果作业失败,我们需要停止运
我正在从事一个大量使用 Apache NiFi v1.10.0 的项目。我厌倦了点击数百个流程组来应用基本相同的小修复。 我最近发现了远程进程组,我想知道是否有办法将 NiFi 实例连接到自身并以这种
我使用的是 Nifi 0.4.1 版本。我正在编写自定义代码以将 CSV 转换为 avro 格式。我已经创建了类文件并能够生成 nar 文件。将 nar 文件放在 lib 目录中并重新启动 nifi
我正在尝试重新启动 NiFi 并出现以下异常。 2016-04-22 09:27:30,672 WARN [main] org.apache.nifi.web.server.JettyServer F
根据我在使用 NiFi 构建一些数据库摄取 PoC 后的理解,整个数据流作为流文件流运行。并且在任何特定时间,执行控制可以同时在一个或多个处理器上。 所以我真的很困惑如何针对任何故障调试复杂的数据流。
我想在我的 Nifi 处理器中引用一个环境变量(一个 linux 环境变量)。我尝试通过直接在处理器属性中引用 ${MY_VARIABLE_NAME} 来使用表达式语言。但这似乎不起作用。这可能吗?如
我是 nifi 的新手,我试图了解(因为它看起来很多基于 GUI)是否有一种方法可以在 Nifi 上自动缩放,以及如何使用 xml Nifi 模板并将其部署到集群。 本质上,我们试图做的是使用 Nif
我正在使用 Apache NiFi 来摄取和预处理一些 CSV 文件,但是在长时间运行时,它总是失败。错误总是一样的: FlowFile Repository failed to update 在日志
我正在为我的数据流开发新的 Nifi 处理器。我在 eclipse 中进行代码更改,创建新的 .nar 文件并将其复制到 Nifi lib 以进行测试。 在 nar 更新中,Nifi 需要重新启动,这
在 NiFi 中,存在从 MQTT(ConsumeMQTT)消费并发布到 HDFS 路径(PutHDFS)的数据流。我需要在将消耗的数据推送到 HDFS 路径之前引入 60 分钟的延迟。发现 Cont
我是 apache NIFI 的新手。我有点想知道保存按钮在哪里。我尝试了我在 youtube 上看到的教程中的示例。我想保存我创建的所有处理器以供将来引用。我没有看到任何保存按钮。以后可以保存我的工
我是一名优秀的程序员,十分优秀!