You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

StreamSets文本转JSON遇阻:JS处理器无数据,Groovy报错求助

非标准键值对转JSON导入HDFS的优化方案

首先看你的输入数据,是类似{ 1046= 1047= 1048=5324800 ... }的非标准键值对格式,要转成合法JSON再导入HDFS,除了JavaScript Evaluator,有几个更靠谱的方案,还能解决你换Groovy后报错的问题:

方案一:用ReplaceText + JSONTransform 可视化处理(无需写复杂脚本)

这个方案适合不想写代码的场景,纯靠NiFi处理器配置完成转换:

  • 第一步:ReplaceText 处理器:批量替换格式,把非标准键值对转成JSON结构
    1. 先替换键值对格式:用正则(\d+)=(\S*) 替换为 "$1": "$2",把1048=5324800变成"1048": "5324800"
    2. 再替换分隔符:用正则(?<=") (?=") 替换为 , ,把键值对之间的空格换成逗号分隔
    3. 最后修正首尾格式:把{ 替换为{,把, }替换为 },去掉多余的逗号和空格
  • 第二步:JSONTransform 处理器(可选):如果需要调整JSON结构(比如嵌套、字段重命名),可以用这个处理器做进一步标准化,确保输出是完全合法的JSON。

方案二:用ExecuteScript(Groovy)处理,解决你之前的报错问题

你之前用Groovy报错,大概率是用了错误的NiFi脚本模式——NiFi的ExecuteScript处理单流文件时,不是用records数组循环,而是要通过StreamCallback读取整个文件内容处理。给你一个能直接运行的Groovy脚本:

import org.apache.nifi.processor.io.StreamCallback
import java.nio.charset.StandardCharsets

def flowFile = session.get()
if (!flowFile) return

// 读取流文件内容并转换格式
flowFile = session.write(flowFile, { inputStream, outputStream ->
    def rawContent = inputStream.text
    // 分步转换非标准格式为JSON
    def jsonContent = rawContent
        .replaceAll(/(\d+)=(\S*)/, '"$1": "$2"')  // 键值对加引号
        .replaceAll(/\{ /, '{')                   // 去掉开头{后的空格
        .replaceAll(/, \}/, ' }')                 // 去掉结尾前的多余逗号
        .replaceAll(/(?<=") (?=")/, ', ')         // 键值对之间加逗号
    outputStream.write(jsonContent.getBytes(StandardCharsets.UTF_8))
} as StreamCallback)

// 流转到成功队列
session.transfer(flowFile, REL_SUCCESS)

这个脚本会读取整个流文件的内容,批量转换格式后输出,完全适配你的输入数据。

方案三:用ConvertRecord 处理器(最规范的Record处理方式)

如果你的数据量较大,或者需要长期维护,推荐用NiFi的Record API来处理:

  • 配置RegexRecordReader:自定义正则表达式\{(?<content>[^}]+)\}捕获键值对内容,再用子正则(\d+)=(\S*)提取每个字段的键和值
  • 配置JsonRecordWriter:直接将读取到的Record转换成标准JSON格式输出
    这种方式不需要写脚本,全靠可视化配置,而且性能更优,适合生产环境。

为什么你的JavaScript Evaluator没读到记录?

大概率是输入数据没有被正确分割为多条记录:比如NiFi默认的行分隔符和你的数据换行不匹配,或者处理器的Record Reader配置错误,导致records数组为空,循环根本没执行。你可以先检查一下输入流文件的内容格式,以及处理器的"Record Reader"配置是否正确。

内容的提问来源于stack exchange,提问作者user6325753

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:56:14