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

标签: nifi 网站 数据 | 发表时间:2019-07-30 17:57 | 作者:357029540
出处:https://www.iteye.com

        最近稍微研究了下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 = ?

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



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [nifi 网站 数据] 推荐:

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

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

开源实时数据同步工具NiFi

- - 标点符
Apache NiFi 是一个强大的数据流管理和自动化工具,旨在简化数据的采集、传输、处理和分发. 它特别适合于构建和管理复杂的数据流管道,支持从各种数据源到不同目标系统的数据传输. Apache NiFi主要功能. Apache NiFi 是一个用于自动化数据流的强大工具,具有广泛的功能集,旨在支持从各种数据源到不同目标的复杂数据流管道.

10 分钟了解 Apache Nifi 在物联网的使用

- - IT瘾-dev
微信公众号: 深广大数据Club. 关注可了解更多大数据相关的资讯. 问题或建议,请公众号留言;. 如果你觉得深广大数据Club对你有帮助,欢迎转发朋友圈. 多年来,物联网(IoT)一直存在于技术领域. 有许多有趣的技术正被投射为“物联网的解决方案”. 在本文中,将讨论IoT和NiFi实验. 物联网(Internet of Things,缩写IoT).

数据科普──网站数据是怎么来的2

- 章明 - 所有文章 - UCD大社区
接上文,我们的数据的中,如果想记录用户的点击行为,一般会有两种方式进行记录. 一种方式是在点击上埋点的方式,在点击的代码中加入一些代码,例如seed=“submit“ 这样的代码, 跟踪的JS在用户点击的时候向数据记录的服务器回发数据代码的记录. 这样的埋点可以放在有跳转产生的链接上,也可以放在例如checkBOX这样的控件上.

几个数据挖掘相关网站及其评价(2)

- Haides - 博客园-首页原创精华区
一个中文的数据挖掘网络资源的索引:“数据草堂:优秀的数据分析师应该关注哪些网站”(http://blog.sina.com.cn/s/blog_5fc375650102dqri.html). 一个入门级的网站:网站分析在中国(http://www.chinawebanalytics.cn/),这个网站的文章好像基本出自一人之手,其网站地图给出的大纲比较有条理,可以算一个网站分析入门的网站.

开源网站分析软件Piwik的数据库表结构

- sun - 标点符
Piwik是一套基于Php+MySQL技术构建,能够与Google Analytics相媲美的开源网站访问统计系统,前身是phpMyVisites. Piwik可以给你详细的统计信息,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等,并且采用了大量的AJAX/Flash技术,使得在操作上更加便易.

最新数据:全球十大文件共享网站列表

- 在路上 - cnBeta.COM
BitTorrent似乎已经不再是互联网文件共享的主导,最新数据表明,文件共享网站成为人们最常用的交换文件的方式,它们的流量已经超越了著名的海盗湾、Mininova等BT网站. 著名的Megaupload、Mediafire更是人尽皆知,以下是目前全球最大的是个文件共享网站及其访问数据,它们的流量依然在不断增长中.

网站运营数据分析之内容指标

- 翔 - 互联网的那点事
做为网站运营、产品经理、交互设计师等职位,经常要对网站的一些运营数据做分析,那么这些公式是如何计算的,每个术语又代表什么意思呢. 请看网站运营数据分析之内容指标:. 网站转换率 Take Rates (Conversions Rates). 计算公式:网站转换率=进行了相应的动作的访问量/总访问量.