`
357029540
  • 浏览: 735627 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

使用NiFi简单的从网站获取数据写入到mysql数据库

    博客分类:
  • nifi
 
阅读更多

        最近稍微研究了下etl工具nifi,它是Apache下面的一个项目,是用作数据流处理的,具体的就不多做介绍了,网上也有很多介绍,官网是https://nifi.apache.org/docs.html,我在这里做了一个从中移物联网onenet平台抽取数据到mysql的功能,没有做数据过滤以及中文转码乱码的情况处理,这2个地方还不清楚怎么做,如果会的同学也帮忙指导我一下,我们接下来看看整个的设计过程。

      首先我们在官网上面下载nifi,我这里使用的版本是1.9.2,解压nifi后,我们就可以进入该文件夹下面的bin目录,点击run-nifi.bat启动nifi,可能nifi启动毕竟慢的原因,我关闭后重新启动一两次才能打开nifi的网页,默认端口是8080,可以在conf文件夹下面的nifi.properties修改端口号nifi.web.http.port。

      进入到nifi主页后,我们可以看到如下图片



 我们选择第一个图标,按住鼠标拖动该图标到空白页即可,显示出如下图片

 在搜索框里面输入GetHttp,然后双击它就可以了,然后在空白页就会出现

 双击或者右键点击configure选项,我们可以在settings->name下自定义名称,我们这里主要介绍下properties页签下的配置,其他的页签配置可以参考官网介绍,在properties页签下我们首先得定义从哪里取数据即url属性,在配置url属性之前我们可以可以在nifi配置一个公共的url地址属性,在空白处右键点击鼠标可以出现如下所示的内容



 选择variables属性,进入后如下所示



 添加如上所示的属性,现在回到GetHttp的properties页签上,在url属性上输入以下值



 filename属性就是以后的flowfile名称,同时定义一个自定义属性api-key,用于参数的传递,接下来需要注意的是必须定义一个SSL Context Service,点击该属性的value值,如果没有定义过该属性值,需要我们自己新创建一个SSL Context Service,如下所示

 点击create new service后进入如下界面



 
 根据情况选择其中一个即可,通过SSL Context Service最右边的箭头符号进入到创建好的value值后,我们可以在properties页签中定义keystore和truststore2种方式的加密方式,我这里选择了keystore的方式,可以参考https://www.cnblogs.com/aiaitie/p/9525564.html这个文章或者百度下keystore查询,生成后的引用方式

 设置正确后,可以看到有个“雷电”符号,点击它表示启用就可以完成该SSL Context Service的应用了,因为从onenet接收过来的数据是

{
  "errno" : 0,
  "data" : {
    "private" : true,
    "protocol" : "DTU",
    "create_time" : "2019-07-16 10:25:48",
    "act_time" : "2019-07-16 17:02:09",
    "online" : true,
    "id" : "设备id",
    "auth_info" : "设备编号",
    "last_ct" : "2019-07-30 08:27:27",
    "datastreams" : [ {
      "create_time" : "2019-07-16 17:02:11",
      "uuid" : "ae14d1f5-b789-4ea7-a894-a13b447283bd",
      "id" : "xxx"
    }, ],
    "title" : "设备名称",
    "desc" : "power monitor device"
  },
  "error" : "succ"
}

 我们需要将数据进行json平展,所以引入了FlattenJson Processor进行json数据平展,如下所示



 默认情况下分隔符是“.”,平展后的数据是

{
  "errno" : 0,
  "data.private" : true,
  "data.protocol" : "DTU",
  "data.create_time" : "2019-07-16 10:25:48",
  "data.act_time" : "2019-07-16 17:02:09",
  "data.online" : true,
  "data.id" : "设备id",
  "data.auth_info" : "设备编号",
  "data.last_ct" : "2019-07-30 08:27:27",
  "data.datastreams" : [ {
    "create_time" : "2019-07-16 17:02:11",
    "uuid" : "ae14d1f5-b789-4ea7-a894-a13b447283bd",
    "id" : "xxx"
  }],
  "data.title" : "鍙板彉2",
  "data.desc" : "power monitor device",
  "error" : "succ"
}

 因为在mysql是不能使用“.”来数据插入操作的,而nifi是根据这些字段值进行数据对比和传值的,因此还需要把“.”替换为“_”来进行操作,因此我们还需要引入replaceText processor来进行替换操作,如下所示



 替换完成后接下来我们就可以将json转换为sql进行插入操作了,这个时候我们使用ConvertJSONToSQL processor进行数据的转换,在properties页签中我们需要定义JDBC Connection pool,点击value值,如果没有则新增一个,进入到JDBC Connection pool中,在DBCPConnectionPool的properties页签中我们定义需要的的相关属性,如下所示



 这里需要注意了,因为nifi没有导入mysql的相关jar包,需要我们自己去引入,把我们需要的mysql jar包放入到lib文件夹下面即可,就可以正常的进行使用了,配置好以后同样通过“雷电”符号进行启用配置,当然如果只有
ConvertJSONToSQL processor还是不能把数据写入到mysql数据库中的,我们还要引用putsql processor才行,配置如下



 整体上我们的nifi配置如下所示



 数据库结果如下:



 这里还有个奇怪的是做update操作的时候,它会将data_id字段修改为DATAID的sql语句,如下所示

UPDATE device SET data_title = ?, data_desc = ? WHERE DATAID = ?

 也不是很清楚这个出现的原因,会的同学麻烦指导下。

  • 大小: 7.9 KB
  • 大小: 104 KB
  • 大小: 6.7 KB
  • 大小: 11.6 KB
  • 大小: 15.5 KB
  • 大小: 4.8 KB
  • 大小: 9 KB
  • 大小: 38 KB
  • 大小: 34.2 KB
  • 大小: 45.8 KB
  • 大小: 30 KB
  • 大小: 13.1 KB
  • 大小: 22.1 KB
  • 大小: 74 KB
  • 大小: 13.6 KB
分享到:
评论

相关推荐

    基于nifi将mysql数据导入clickhouse

    基于nifi将mysql数据导入clickhouse。 给出了基于http与JDBC两种方式

    8、NIFI综合应用场景-NiFi监控MySQL binlog进行实时同步到hive

    在本场景中,我们将探讨如何使用NiFi来实时监控MySQL数据库的binlog(二进制日志),并将其中的变更事件同步到Hive数据仓库。由于Hive的插入操作效率较低,这种方案通常不用于直接的实时写入,但可以作为数据流处理...

    7、NIFI综合应用场景-将mysql查询出的json数据转换成txt后存储至HDFS中

    在本文中,我们将探讨一个具体的NIFI应用场景,即如何将从MySQL数据库中查询得到的JSON数据转换成TXT格式,并存储到HDFS(Hadoop分布式文件系统)中。这个场景在大数据处理和分析中非常常见,因为MySQL是常用的关系...

    NiFi需要的mysql驱动文件

    在NiFi中,当你需要从MySQL数据库获取数据,或者将数据写入MySQL时,你需要配置一个处理器(如`GetSQL`或`PutSQL`),并指定JDBC驱动的位置。将mysql-connector-java-5.1.47.jar添加到NiFi的类路径中是至关重要的...

    从Excel中读取数据导入到数据库中

    本文将详细阐述如何从Excel文件中读取数据并将其导入到数据库中,重点处理合并单元格和超过4000字符的数据列。 首先,我们需要理解Excel是常用的数据存储和处理工具,而数据库如MySQL、SQL Server、Oracle等则用于...

    6、NIFI应用场景-离线同步Mysql数据到HDFS中

    在本文中,我们将探讨如何使用NIFI实现离线同步MySQL数据库中的数据到HDFS(Hadoop分布式文件系统)中。这个过程对于大数据分析和处理至关重要,因为它允许将结构化数据集成到大数据平台中。 首先,确保你已经准备...

    mysql历史数据同步到clickhouse 已测试

    定期从MySQL中读取数据,经过处理后写入ClickHouse。对于历史数据一次性迁移,这种方法可能更为简单直接。 - **直接SQL导入**: 如果数据量不大,可以直接编写SQL脚本,将MySQL中的数据导出成CSV或其他文本格式,...

    从EXCEL批量添加数据到数据库

    总之,从Excel批量添加数据到数据库涉及到数据预处理、数据库连接、SQL操作和可能的ETL工具使用。掌握这些技能,将大大提高你在数据处理和管理中的效率,尤其在需要频繁交互Excel和数据库的工作场景中。在实际操作中...

    ETL对比datax-nifi

    ETL是一种数据处理流程,主要用于将来自不同来源的数据提取出来,经过清洗、转换等预处理步骤,再加载到目标数据库或者数据仓库中。这个过程在数据集成领域十分重要,特别是在大数据环境下,ETL技术成为数据管理和...

    Excel导入数据库and数据库数据导入Excel

    当需要将数据库中的查询结果展示在Excel中时,先要执行SQL查询获取数据,然后使用POI库创建新的Excel工作簿和工作表,再将查询结果写入到相应的工作表中。每行数据库记录可以映射为Excel的一行,每个字段对应一个...

    excel批量导入数据库

    然而,当需要将大量数据从Excel导入到数据库时,手动操作不仅耗时,还容易出错。本篇文章将详细讲解如何实现“Excel批量导入数据库”,以及利用小工具提高效率。 一、Excel与数据库的交互原理 Excel数据批量导入...

    数据库数据生成xml

    例如,使用ETL(Extract, Transform, Load)工具如 Talend Open Studio 或 Apache Nifi,它们提供图形化的界面来定义数据流,包括从数据库到XML的转换。另外,数据库管理系统如MySQL、PostgreSQL也提供了内置的XML...

    Google查询并导出Excel源码和直接把数据从数据库中导出到Excel

    总的来说,这两个技术点都涉及到数据的抓取、处理和存储,对于数据分析师、开发人员和业务人员来说,是提高工作效率的重要工具。在实际应用中,需要注意数据安全、隐私保护以及性能优化。同时,根据具体需求,还可以...

    把excel里面的数据导入到数据库中的小例子

    在IT领域,将Excel数据导入数据库是一项常见的任务,...总的来说,将Excel数据导入数据库涉及到数据预处理、数据库连接、数据传输和错误处理等多个环节。掌握这些技能对于提升数据处理效率和保证数据一致性至关重要。

    关系型数据库的数据导入Hbase

    关系型数据库(如MySQL、Oracle、SQL Server等)与非关系型数据库(如Hbase)在数据存储和处理上有着显著的区别。关系型数据库遵循ACID(原子性、一致性、隔离性和持久性)原则,适合结构化数据的存储,而Hbase作为...

    mysql 和mongodb 互相同步.zip

    同时,要考虑到数据规模、网络条件、服务器性能等因素,优化同步效率,避免过度负担数据库。 总之,MySQL与MongoDB的互相同步是一个复杂但重要的任务,涉及数据模型的转换、数据迁移的策略以及性能优化等多个方面。...

    计算机软件-编程源码-关于向数据库中导入数据的几种方法.zip

    可以使用read_csv等函数读取数据,然后通过to_sql方法将数据写入数据库,如MySQL、SQLite或PostgreSQL: ```python import pandas as pd from sqlalchemy import create_engine df = pd.read_csv('students.csv') ...

    实现从excel和数据库中数据的来回传递

    - **Excel到数据库**:可以使用编程语言(如Python的pandas库,Java的JDBC库)读取Excel文件并写入数据库。也可以借助工具(如SQL Server的Import/Export Wizard,Excel的数据连接功能)直接连接数据库进行数据导入...

    WEB导入文件到数据库.zip

    - **使用ETL工具**:Extract, Transform, Load(ETL)工具如SSIS(SQL Server Integration Services)、 Talend 或 Apache Nifi 可以自动化这个过程,支持从各种来源抽取数据,进行转换,并加载到目标数据库。...

    以批量方式导入导出数据库记录

    3. **利用ETL工具**:Extract, Transform, Load(ETL)工具如Apache Nifi、Talend或Informatica,专门设计用于数据集成,支持从不同来源抽取数据,进行转换处理,然后批量加载到目标数据库。 4. **编程语言接口**:...

Global site tag (gtag.js) - Google Analytics