NIFI关于Variables的使用

本文介绍了NIFI中变量(variables)和参数(parameters)引用的区别,变量使用${变量名}形式引用。详细说明了添加Variables的步骤,还以添加DBCPConnectionPool控制器服务为例,测试变量是否生效,最后介绍了校验变量的方法。

说明

NIFI中的变量(variables)和参数(parameters)在引用的时候是有区别的。

参数的引用是使用#{参数名}的形式。

变量是使用${变量名}的形式来引用。

nifi版本:1.23.2(docker镜像)

Variables:出于兼容性目的,仍支持通过变量和 nifi.properties 文件的自定义属性,和参数的功能不同,变量不支持敏感属性,变量值不能引用其他变量或使用表达式语言。变量和属性将在未来的版本中删除。因此强力推荐使用参数(Parameter Contexts)。

关于参数的使用可以参考:NIFI关于Parameter Contexts的使用

添加Variables

在画布空白位置鼠标右键,选择Variables

在弹出的页面点击右上角的+添加需要的变量

这里以添加MySQL相关参数为例,输入变量名和对应的值

 添加完成后,最后点击APPLY。我这里添加了5个变量

右侧四个分表代表的含义

Variables:当前变量的名称

Referencing Processors :被哪个处理器引用,这里就会显示对应的名称

Referencing Controller Services :被哪个控制器服务引用

Unauthorized Referencing Components :被哪个未授权的组件引用

 点击APPLY后会对当前的变量进行以下几个步骤的处理:

确定受影响的组件=>停止受影响的处理器=>禁用受影响的控制器服务=>应用更新=>启用受影响的控制器服务=>重启受影响的处理器。每次更新变量的时候都会执行以上几个步骤。

测试变量是否生效

添加DBCPConnectionPool控制器服务

以添加DBCPConnectionPool为例测试刚才添加的MySQL变量,在画布空白位置鼠标右键选择Configure,然后在弹出的页面点击右上角的加号+

在新的页面中筛选出DBCPConnectionPool,最后点击ADD添加控制器服务

 点击刚才新添加的控制器服务右侧的小齿轮,开始配置

在弹出的页面切换到PROPERTIES页面,分别配置以下几个属性的值,Password因为是敏感属性,所以填入值之后是不会显示的,变量的引用要使用${变量名}的形式

校验变量是否生效

点击控制器服务右上角的验证属性是否有效,在弹出的页面直接点击VERIFY进行验证

如果验证失败的话会有报错提示,根据报错提示修改即可

所有项全部验证通过会显示绿色对钩

结束语

以上便是NIFI中关于Variables(变量)的使用,如果有问题欢迎大家评论。

NiFi使用GloVe语句并没有直接的内置功能支持,但可以通过一系列的处理器组合来实现相关操作。以下是一种可能的实现思路及步骤: ### 1. 数据获取 使用 `GetFile` 或者 `GetHTTP` 等处理器来获取包含文本数据的文件或者从网络获取数据。例如,使用 `GetFile` 处理器从本地文件系统获取文本文件: ```xml <processor name="GetFile" class="org.apache.nifi.processors.standard.GetFile"> <property name="Input Directory">/path/to/your/text/files</property> </processor> ``` ### 2. 文本预处理 使用 `ReplaceText` 等处理器对文本进行清洗和预处理,去除不必要的字符、标点等。示例配置如下: ```xml <processor name="ReplaceText" class="org.apache.nifi.processors.standard.ReplaceText"> <property name="Search Value">[^a-zA-Z0-9\s]</property> <property name="Replacement Value"> </property> <property name="Replacement Strategy">Regex Replace</property> </processor> ``` ### 3. 分词 可以使用自定义的脚本处理器(如 `ExecuteScript`)结合Python等语言来进行分词操作。以下是一个Python脚本示例: ```python import nltk from nltk.tokenize import word_tokenize from org.apache.nifi.processor.io import StreamCallback from java.nio.charset import StandardCharsets import io nltk.download('punkt') class TokenizeCallback(StreamCallback): def __init__(self): pass def process(self, inputStream, outputStream): text = inputStream.readAll().decode('utf-8') tokens = word_tokenize(text) output = " ".join(tokens) outputStream.write(output.encode('utf-8')) flowFile = session.get() if flowFile is not None: flowFile = session.write(flowFile, TokenizeCallback()) session.transfer(flowFile, REL_SUCCESS) ``` ### 4. 加载GloVe模型 同样可以使用 `ExecuteScript` 处理器来加载预训练的GloVe模型。示例代码如下: ```python import numpy as np # 加载GloVe模型 glove_file = '/path/to/glove.6B.50d.txt' glove_model = {} with open(glove_file, 'r', encoding='utf-8') as f: for line in f: values = line.split() word = values[0] coefs = np.asarray(values[1:], dtype='float32') glove_model[word] = coefs ``` ### 5. 生成向量表示 结合分词结果和加载的GloVe模型,为每个词生成对应的向量表示。可以在 `ExecuteScript` 中继续编写代码实现: ```python # 假设已经有分词结果 stored in 'tokens' vectors = [] for token in tokens: if token in glove_model: vectors.append(glove_model[token]) else: # 处理未登录词 vectors.append(np.zeros(50)) # 假设GloVe维度为50 # 可以根据需求对向量进行进一步处理,如求平均等 sentence_vector = np.mean(vectors, axis=0) ``` ### 6. 输出结果 使用 `PutFile` 或者 `PutHTTP` 等处理器将生成的向量表示输出到文件或者发送到指定的服务器。示例配置如下: ```xml <processor name="PutFile" class="org.apache.nifi.processors.standard.PutFile"> <property name="Directory">/path/to/output/files</property> </processor> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值