首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在NiFi中使用EvaluateJsonPath处理器拆分json

基础概念

NiFi(Apache NiFi)是一个易于使用、功能强大的数据处理和分发系统。它允许用户通过拖放和配置处理器来设计数据流。EvaluateJsonPath 是 NiFi 中的一个处理器,用于从 JSON 数据中提取字段。

优势

  1. 灵活性:可以根据 JSON 结构的不同部分提取数据。
  2. 性能:高效处理大量 JSON 数据。
  3. 易用性:通过简单的配置即可实现复杂的数据提取逻辑。

类型

EvaluateJsonPath 处理器主要有以下几种类型:

  • Get Field Value:从 JSON 中提取单个字段的值。
  • Get Fields:从 JSON 中提取多个字段的值。
  • Get Field Value by Path:通过指定路径从 JSON 中提取字段的值。

应用场景

  1. 数据转换:将 JSON 数据转换为其他格式(如 CSV)。
  2. 数据过滤:根据 JSON 数据中的某些字段进行数据过滤。
  3. 数据路由:根据 JSON 数据中的某些字段将数据路由到不同的目标。

示例

假设我们有一个 JSON 数据如下:

代码语言:txt
复制
{
  "id": 1,
  "name": "John Doe",
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA"
  }
}

我们希望提取 nameaddress.city 字段。

配置步骤

  1. 添加 EvaluateJsonPath 处理器
    • 在 NiFi 流图中添加一个 EvaluateJsonPath 处理器。
  • 配置处理器
    • Properties 部分,设置 Destinationflowfile-content
    • Return Type 中选择 json
    • JsonPath Expressions 中添加以下表达式:
    • JsonPath Expressions 中添加以下表达式:
  • 连接处理器
    • 将输入数据连接到 EvaluateJsonPath 处理器。
    • EvaluateJsonPath 处理器的输出连接到下一个处理器(如 SplitJsonPutFile)。

示例代码

假设我们有一个 JSON 文件 data.json,内容如下:

代码语言:txt
复制
[
  {
    "id": 1,
    "name": "John Doe",
    "address": {
      "street": "123 Main St",
      "city": "Anytown",
      "state": "CA"
    }
  },
  {
    "id": 2,
    "name": "Jane Smith",
    "address": {
      "street": "456 Elm St",
      "city": "Othertown",
      "state": "NY"
    }
  }
]

我们可以使用以下 NiFi 流图来提取 nameaddress.city 字段:

  1. GetFile:从文件系统中读取 JSON 文件。
  2. EvaluateJsonPath:提取 nameaddress.city 字段。
  3. SplitJson:将提取的字段拆分为单独的记录。
  4. PutFile:将拆分后的记录保存到文件系统中。

常见问题及解决方法

问题:JsonPath 表达式错误

原因:JsonPath 表达式不正确或不匹配 JSON 数据结构。

解决方法

  • 确保 JsonPath 表达式正确。
  • 使用在线 JsonPath 测试工具(如 jsonpath.com)验证表达式。

问题:提取的字段为空

原因

  • JsonPath 表达式不匹配 JSON 数据。
  • JSON 数据格式不正确。

解决方法

  • 检查 JsonPath 表达式是否正确。
  • 确保 JSON 数据格式正确,没有语法错误。

问题:性能问题

原因

  • 处理大量数据时,性能可能成为瓶颈。

解决方法

  • 使用 NiFi 的并行处理功能。
  • 优化 JsonPath 表达式,减少不必要的计算。

参考链接

通过以上步骤和示例,你应该能够在 NiFi 中成功使用 EvaluateJsonPath 处理器拆分 JSON 数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

大数据NiFi(六):NiFi Processors(处理器

NiFi Processors(处理器)为了创建高效的数据流处理流程,需要了解可用的处理器(Processors )类型,NiFi提供了大约近300个现成的处理器。...此处理器应将文件从一个位置移动到另一个位置,而不是用于复制数据。GetHDFS:监视HDFS中用户指定的目录。每当新文件进入HDFS时,它将被复制到NiFi并从HDFS删除。...二、数据转换ReplaceText:使用正则表达式修改文本内容。SplitText:SplitText接收单个FlowFile,其内容为文本,并根据配置的行数将其拆分为1个或多个FlowFiles。...例如,可以配置处理器将FlowFile拆分为多个FlowFile,每个FlowFile只有一行。SplitJson:将JSON对象拆分成多个FlowFile。...五、提取属性EvaluateJsonPath:用户提供JSONPath表达式,这个表达式将对Json内容操作,将表达式计算的结果值替换FlowFile内容或将结果值提取到用户自己命名的Attribute

2.1K122

大数据NiFi(十九):实时Json日志数据导入到Hive

​实时Json日志数据导入到Hive 案例:使用NiFi将某个目录下产生的json类型的日志文件导入到Hive。...这里首先将数据通过NiFiJson数据解析属性,然后手动设置数据格式,将数据导入到HDFS,Hive建立外表映射此路径实现外部数据导入到Hive。...使用到的处理器有:“TailFile”、“EvaluateJsonPath”、“ReplaceText”、“PutHDFS”四个处理器。...这里我们使用“ReplaceText”处理器将上个处理器EvaluateJsonPath”处理后的每个FlowFile内容替换成自定义的内容,这里自定义内容都是从FlowFile的属性获取的值,按照...页面: hive结果: 问题:当我们一次性向某个NiFi节点的“/root/test/jsonfile”文件写入数据时,这时“EvaluateJsonPath”一个FlowFile中会有多条json

2.3K91
  • 大数据NiFi(二十):实时同步MySQL数据到Hive

    ,获取对应binlog操作类型,再将想要处理的数据路由到“EvaluateJsonPath处理器,该处理器可以将json格式的binlog数据解析,通过自定义json 表达式获取json数据的属性放入...多个节点使用逗号分隔,格式为:host1:port、host2:port…,处理器将尝试按顺序连接到列表的主机。如果一个节点关闭,并且群集启用了故障转移,那么处理器将连接到活动节点。...: 1、配置“EvaluatejsonPath”的“PROPERTIES”属性 2、连接“RouteOnAttribute”处理器和“EvaluatejsonPath处理器 连接关系,我们这里只关注...NiFi连接Hive就是使用了HiveServer2方式连接,所以这里需要配置HiveServer2。...处理器的状态,单独启动“CaptureChangeMySQL”处理器,清空重新消费的数据(以上主要就是避免此版本NiFi bug问题),启动当前案例其他NiFi处理器

    3.1K121

    Apache NiFi安装及简单使用

    NIFI简单使用 不理解NIFI是做什么的,看一个简单的例子(同步文件夹)吧,帮助理解 1、从工具栏拖入一个Processor,在弹出面板搜索GetFIle,然后确认 ? ?...3、从工具栏拖入一个Processor,在弹出面板搜索PutFIle,然后确认,第一步 4、配置PutFile,设置结束关系、输出目录,其他设置可以不动,输出目录为空文件夹 ? ?...SplitJson:允许用户将由数组或许多子对象组成的JSON对象拆分为每个JSON元素的FlowFile。...然后,该处理器允许将这些元素分割成单独的XML元素。 UnpackContent:解压缩不同类型的归档格式,ZIP和TAR。存档的每个文件随后作为单个FlowFile传输。...这些处理器总是被期望彼此结合使用,并允许用户在NiFi内直观地创建Web服务。

    6.6K21

    NIFI文档更新日志

    入门(读完即入门) 新增了解NiFi最大线程池和处理器并发任务设置 新增深入理解NIFI Connection 2020-05-12 新增自定义Processor组件 2020-05-10 新增AvroReader...-12-05 增加了一个JOLT嵌套数组的实际案例jolt教程 新增PutEmail 2019-12-04 新增Processor代码的一些方法 2019-12-03 新增nifi注解 新增新手常见问题页面...2019-11-30 新增NIFI扩展系列:JOLT 详解,对使用JoltTransformJSON 还有疑惑的同学的解药 由上面翻译过来的英文简易版JOLT教程Json Jolt Tutorial...2019-10-20 更新日志单独做出页面 已有的模板demo.xml文件 由百度云盘下载改为直接使用GitHub 浏览器点击下载 编辑管理员指南文档格式(还未修订) 2019-11-19 修复扩展开发...ConvertJSONToAvro:将 JSON数据转成AVRO格式 CryptographicHashAttribute:哈希流属性 DistributeLoad:数据分发 EvaluateJsonPath

    2.3K20

    Edge2AI之从边缘摄取数据

    在本次实操,您将使用 MiNiFi 从边缘捕获数据并将其转发到 NiFi。 实验总结 实验 1 - 在 Apache NiFi 上运行模拟器,将 IoT 传感器数据发送到 MQTT broker。...实验 3 - 使用Cloudera Edge Flow Manager更新现有边缘流程并在边缘执行额外处理 实验 1 - Apache NiFi:设置机器传感器模拟器 在本实验,您将运行一个简单的 Python...为方便起见,我们将使用 NiFi 来运行脚本而不是 Shell 命令。 转到 Apache NiFi 并将处理器 (ExecuteProcess) 添加到画布。...我们将在下一节解决这个问题。 您现在可以停止该模拟器(停止 NiFi 处理器)。 实验 3 - 更新流程以在边缘执行额外处理 在之前的实验,我们注意到一些传感器间歇性地发送错误的测量值。...选择EvaluateJSONPath处理器并单击Add 双击新处理器使用以下属性对其进行配置: Processor Name: Extract sensor_0 and sensor1 values

    1.5K10

    使用Apache NiFi 2.0.0构建Python处理器

    Python 处理器提供了一种强大的方式来扩展 NiFi 的功能,使用户能够在数据流利用丰富的 Python 库和工具生态系统。...NiFi 的 Python 处理器提供了一种灵活的方式来扩展其功能,特别是对于处理非结构化数据或与外部系统( AI 模型或云原生向量数据库 Milvus 等向量存储)集成。...NiFi 提供了广泛的处理器,用于处理 CSV、JSON、Avro 等结构化数据格式,以及用于与数据库、API 和其他企业系统进行交互。...然而,使用最新版本,Python 集成得到了极大改善,允许在 NiFi 管道更无缝地执行 Python 代码。...DetectObjectInImage:此处理器似乎利用深度学习技术进行 图像的对象检测,使用户能够分析图像数据并提取有价值的见解。

    33210

    使用NiFi每秒处理十亿个事件

    在本文中,我们定义了一个常见的用例,并演示了NiFi何在实际数据处理场景实现高可伸缩性和高性能。 用例 在深入研究数字和统计信息之前,了解用例很重要。...每个处理器被表示用号码:1至8 的可穿行用例,下文中,为了描述每个步骤是如何在数据流来实现的引用这些处理器的数字。 ?...如果日志消息包含任何异常,则该异常也必须保留。 另请注意,某些日志消息可能是多行日志消息。 将日志消息转换为JSON [处理器6]。 压缩JSON(无论原始输入数据是否已压缩)[处理器7]。...需要考虑的一个更有用的地方是“过滤器日志,转换为JSON处理器[Processor 6]的输入。该处理器处理的数据量告诉我们集群能够处理的数据总量。此外,我们可以查看此处理器的状态历史记录。...因此,我们希望具有相同数量节点的集群产生的吞吐量将比上一节的小得多。 4核虚拟机 我们首先尝试进行横向扩展,以查看NiFi使用非常小的VM(每个只有4个内核)的性能如何。

    3K30

    Edge2AI之NiFi 和流处理

    在本次实验,您将实施一个数据管道来处理之前从边缘捕获的数据。您将使用 NiFi 将这些数据摄取到 Kafka,然后使用来自 Kafka 的数据并将其写入 Kudu 表。...在本实验,我们将在 Schema Registry 中注册此Schema,以便我们在 NiFi 的流可以使用统一服务引用Schema。...您可以根据需要添加更多处理器来处理、拆分、复制或重新路由您的 FlowFile 到所有其他目的地和处理器。 为了完成这个实验,让我们提交和版本化我们刚刚完成的工作。...单击EXPLORE链接以可视化特定分区的数据。确认 Kafka 主题中有数据,并且看起来像传感器模拟器生成的 JSON。 再次停止NiFi ExecuteProcess模拟器。...实验 4 - 使用 NiFi 调用 CDSW 模型端点并保存到 Kudu 在本实验,您将使用 NiFi 消费包含我们在上一个实验摄取的 IoT 数据的 Kafka 消息,调用 CDSW 模型 API

    2.5K30

    Apache NiFi 简介及Processor实战应用

    通俗的来说,即Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统,其为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑。...• Extensions:在其他文档描述了各种类型的NiFi扩展,Extensions的关键在于扩展在JVM操作和执行。...Flow Controller扮演者文件交流的处理器角色,维持着多个处理器的连接并管理各个Processer,Processer则是实际处理单元。...• 启动命令(使用Rest API的Put方法): curl -i -X PUT -H ‘Content-Type:application/json’ -d ‘ { “revision”: { “clientId.../processors/processorsID • 停止命令(使用Rest API的Put方法): curl -i -X PUT -H ‘Content-Type:application/json

    7.4K100

    0625-6.2.0-Hello NiFi-第一个NiFi例子

    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。...同时对如何在CDH中使用Parcel安装CFM做了介绍,参考《0623-6.2.0-如何在CDH安装CFM》。也介绍过NiFi处理器以及实操,参考《0624-6.2.0-NiFi处理器介绍与实操》。...测试环境 1.Redhat7.4 2.CM/CDH6.2 3.CFM1.0 4.NiFi1.9 5.使用root用户操作 6.CDH集群未启用Kerberos 2 Hello NiFi 1.在NiFi节点所在的服务器节点的本次磁盘准备...3.在HDFS创建一个nifi目录,为了测试简单,将目录权限修改为最大。...注意:put到HDFS成功后,本地的/data/nifi的文件都已被删除。 18.通过NiFi的界面可以发现GetFile和PutHDFS处理器都读/写了36 byte,并且写出或者写入3个文件。

    1.4K50

    0624-6.2.0-NiFi处理器介绍与实操

    同时对如何在CDH中使用Parcel安装CFM做了介绍,参考《0623-6.2.0-如何在CDH安装CFM》。...本文会首先对NiFi使用做一下简单的介绍,然后对处理器(Processor)进行详细介绍。...测试环境 1.Redhat7.4 2.CM/CDH6.2 3.CFM1.0 4.NiFi1.9 2 NiFi操作简介 1.使用http://:8080/nifi登录到NiFi...3 NiFi处理器介绍 3.1 增加一个处理器(Processor) 1.我们现在可以通过在画布添加Processor来开始创建数据流。 为此,请从屏幕左上角拖动“处理器”图标( ?...这将为您提供处理器使用信息,例如处理器的描述,可用的不同Relationships,何时使用不同的Relationships,处理器及其文档公开的Properties,以及哪些FlowFile Attributes

    2.4K30

    基于Apache NiFi 实现ETL过程的数据转换

    0 前言 Apache NiFi 是广泛使用的数据流管理工具,也可以实现ETL功能....本次将讨论如何在NiFi实现ETL过程实现转换功能,此处以列名转换为例. 1 应用场景 列名转换是ETL过程中常常遇到的场景。...2.2 基于QueryRecord 处理器 场景 适用于使用 NiFi 组件生成SQL的场景 优势 通用性好 语法规范 实现 QueryRecord 的 SQL 形如 select id as uid...Groovy 脚本内解析数据,做列名转换再输出即可 优势 能实现复杂规则,且可以热加载,不需要部署和重启NiFi 劣势 需要学习 nifi groovy 代码的编写方法 2.4 自定义处理器 场景 适用于要实现复杂转换...优势 能实现复杂规则 可以覆盖更多业务规则,不仅是列名转换 性能比2.3高很多 劣势 需要部署和重启NiFi 3 当前方案优势 目前项目上使用方案2.2,因为项目上业务简单,直接使用SQL上手容易,

    2.5K00

    Apache NiFi:实时数据流处理的可视化利器【上进小菜猪大数据系列】

    流程代表一个数据流处理任务,由多个处理器组成。处理器NiFi的基本处理单元,用于执行各种操作,如数据收集、转换、路由和存储。连接用于连接处理器,构建数据流的路径。...流文件是NiFi的数据单元,携带着数据和元数据。组件是NiFi的可重用模块,用于简化流程的构建和维护。 NiFi的架构和工作原理 NiFi的架构采用了分布式的、事件驱动的模型。...它具备以下特点: 可视化数据流设计:NiFi提供了一个直观的图形界面,使用户能够以可视化方式构建和管理数据流处理任务。用户可以通过简单地拖拽和连接处理器来定义数据流的流程和逻辑。...强大的数据路由和转换能力:NiFi内置了丰富的处理器,可以执行各种操作,如数据过滤、转换、合并、拆分和聚合等。这些处理器可以根据定义的规则将数据流路由到不同的目的地,实现复杂的数据处理和转换逻辑。...通过代码实例,我们展示了如何使用NiFi进行实时数据流处理,以及如何通过Site-to-Site客户端将数据发送到NiFi流程

    74620

    大数据NiFi(二):NiFi架构

    NiFi架构一、​​​​​​​NiFi核心概念NiFi的基本设计理念是基于数据流的编程Flow-Based Programming(FBP),应用是由处理器、连接器组成的网络。...Processor负责创建、接收、发送、转换、路由、拆分、合并、处理FlowFile。Processor可以访问零到多个FlowFile的属性和内容,可以提交或回退提交的任务。...Process Group处理器组,一堆Processors及其对应的Connection组成了一个Process Group,这个处理器组通过输入端口接收数据,通过输出端口发送数据。...在搭建NiFi集群时,使用用户安装的zookeeper集群时zookeeper版本需要是3.5版本以上。...此外,我们可以通过集群任何节点的UI与NiFi集群进行交互,所做的任何更改都会复制到集群的所有节点。​

    2.3K71

    大数据NiFi(十四):数据来源和变量及表达式

    数据来源和变量及表达式一、数据来源NiFi对其摄取的每个数据保存明细。...当数据通过系统处理并被转换,路由,拆分,聚合和分发到其他端点时,这些信息都存储在NiFi的Provenance Repository。...使用表达式表达式用来引用DataFlow属性或者引用定义好的变量,方便在创建和配置数据流时使用他们的值。...NiFi表达式语言始终以符号"${"开始,并以符号"}"结束,在开始和结束符之间是表达式本身的文本,在其最基本的形式,表达式可以仅由属性名称组成。.../docs/nifi-docs/html/expression-language-guide.html#functions在演示将目录A下的数据文件导入到目录B下案例时,B目录是手动写死的,这里我们定义好了变量可以直接在处理器属性引用值

    1.4K121

    Apache NIFI 讲解(读完立即入门)

    NIFI简介 我将在本文中介绍: 什么是ApacheNIFI,应在什么情况下使用它,理解在NIFI的关键概念。 我不会介绍的内容: -NIFI集群的安装,部署,监视,安全性和管理。...NIFI在构建数据pipeline方面更具表现力,我们不需要写代码,而NIFI就是为此而设计的。 强大 NIFI提供了许多开箱即用的处理器使用者其实是站在巨人的肩膀上。...但是,如果你必须使用NIFI,则可能需要更多地了解其工作原理。 在第二部分,我将说明Apache NIFI的关键概念。 剖析Apache NIFI 启动NIFI时,你会进入其Web界面。...在NIFI处理器通过connections连接在一起。在前面介绍的示例数据流,有三个处理器。 ? 理解NIFI术语 要使用NIFI表示数据流,你必须首先掌握其语言。...优先处理FlowFiles NIFI的Connections是高度可配置的。你可以选择如何在队列确定FlowFiles的优先级,以确定接下来要处理的文件。

    12.2K91
    领券