Kettle, Solr
http://antkillerfarm.github.io/
Kettle
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。这个过程有时又被叫做“数据清洗”。
Kettle是一款国外开源的ETL工具。其官网为:
http://community.pentaho.com/projects/data-integration/
从大的方面来说,Kettle的工作,可分为Job和Trans两类。
Job是个大尺度的工作分类,它操作的对象是文件或数据库级别的。
相对的,Trans只要是些小尺度的工作。它操作的对象是Row,也就是一条记录。
Sqoop是另一个数据转换工具,但是没有IDE,功能也局限于数据格式的转换(仅相当于Kettle中的Trans)。其官网:
http://sqoop.apache.org/
Job可以调用Trans,也可以执行shell、SQL、Sqoop等多种脚本。因此,Kettle和Sqoop的关系不是二选一,而是可以协作的。
Kettle是一个大的工具集,主要包括以下组件:
1.spoon。Kettle的IDE。
2.pan。用于执行Trans文件(以ktr为后缀)。
3.Kitchen。用于执行Job文件(以kjb为后缀)。
命令行执行Job和Trans
pan -file=/path/to/ktr
kitchen -file=/path/to/kjb
参见:
http://www.cnblogs.com/wxjnew/p/3620792.html
官网资料:
http://wiki.pentaho.com/display/EAI/Pan+User+Documentation
http://wiki.pentaho.com/display/EAI/Kitchen+User+Documentation
命令行不仅可以执行Job和Trans,还可以向Job和Trans传递参数。参见pan和kitchen命令的-param选项。
Job和Trans对命令行参数的处理,有相关的插件,参见:
http://blog.csdn.net/scorpio3k/article/details/7872179
文本处理
Kettle的文本处理以“行”为单位。下图是一个实际的使用流程图:
1.原始数据来自网络爬虫抓取的数据,它的主体是一个json文件,然而在每一条记录的前后都有一些特殊的字符串,因此从整体来说,并不是一个合法的json文件。
2.采用“字符串替换”插件,去除非法字符串。这里需要注意的是,由于整个过程是数据流形式的,因此,无法在一个步骤中,同时去掉前后两个字符串,而必须分为两个步骤。
3.替换之后,原先有字符串的行,可能变成空行,这是可以使用“过滤记录”插件。
文件的增量处理
kettle没有提供直接的插件用于增量处理,因此需要自己设计增量处理的方法。
增量处理的方法很多,这里仅展示其中一种方法:
1.获得需要处理文件总表A。
注意:获取某个路径下的文件名,要用正则式,而不是常见的
*.*,*.txt
。
对应关系如下:
*.* -> .*
*.txt -> .*\.txt
2.获得已经处理过的文件列表B。这个列表可以来源于数据库,也可来源于文本文件。这里采用后者。
3.使用“合并记录”插件,从A中过滤掉B。“合并记录”插件的flagfield字段,会给出合并的结果。
4.使用“过滤记录”插件,根据flagfield字段的结果,得到过滤后的列表C。C就是真正需要处理的文件列表了。
字段合并操作
Kettle并未提供“字段合并”的插件,因为这个功能如果使用Javascript的话,也就是一行的事情。
调用外部的Java库
1.首先将该库的jar包,放到Kettle的lib文件夹下。
2.其他步骤和一般Java程序没啥区别:import用到的package,然后写代码,over。
HDFS
HDFS的处理比较简单,将普通例子中的本地文件路径,替换为hdfs://形式的hdfs路径即可。
Hbase
Hbase插件中比较费解的是Mapping name这个名词。
从设计初衷来说,kettle本意上是打算利用Mapping将kettle字段映射为Hbase表格的列,从而达到分离两者概念的目的。然而当前的实现中,kettle的所有字段都必须导出到Hbase表格中,不然就会出如下错误:
Can't find incoming field "short_field1" defined in the mapping "mapping_test"
用户对Mapping所做的修改,仅限于修改字段名、设定Key、设定字段类型等。
解决办法:
使用“字段选择”插件过滤掉不必要的字段,然后再导出到Hbase。
参见:
http://forums.pentaho.com/archive/index.php/t-94392.html
Solr
Solr和Lucene的关系
Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。
Solr是一种开放源码的基于Lucene的Java搜索服务器。它是Lucene的子项目,是Lucene面向企业搜索应用的扩展。
简单的说,Lucene是库,而Solr是一个调度Lucene库的Web服务器。
概况
官网:
http://lucene.apache.org/solr/
教程:
http://lucene.apache.org/solr/quickstart.html
网上的资料有些已经很老了,不看也罢。这是官方的Quick Start,必看之。
除了Solr,类似的软件还有senseidb和elasticsearch。参见:
http://www.cnblogs.com/ibook360/archive/2013/03/22/2975345.html
相关资料:
http://www.solr.cc/blog/
http://blog.csdn.net/aidayei/article/details/6526986
solr中文分词
http://outofmemory.cn/code-snippet/3659/Solr-configuration-zhongwen-fenci-qi
Solr配置中文分词器
http://www.importnew.com/12707.html
全文检索引擎Solr系列—–全文检索基本原理
http://iamyida.iteye.com/category/338597
跟益达学Solr5系列教程
http://iamyida.iteye.com/category/335240
跟益达学Lucene5系列教程
start命令
Solr的运行需要启动相应的服务程序。启动命令如下:
bin/solr start -e cloud -noprompt
其中的cloud表示SolrCloud示例模式,即在一台PC上启动若干进程的所谓伪分布式模式。除此之外,还有techproducts、dih、schemaless等示例模式。
这些示例模式对于快速了解Solr很有帮助。
Post工具
从本质来说,Solr是一个Web服务器。所有的服务请求都以http post的形式提交给Solr。因此,为了方便使用,Solr项目专门提供了post工具。
post工具在bin文件夹下,是一个Unix shell脚本。对于Windows用户,Solr提供了post.jar可执行文件,它在example/exampledocs下。
SolrCloud概述
这是官方Quick Start的默认模式。我们首先对一些概念进行一下讲解。(相关内容参见《Apache Solr Reference Guide》末尾的术语表)
Cluster: 由若干Node组成的集群,使用Zookeeper进行协调。这是Solr中物理层面的最大单元。
Node: 一个运行Solr的JVM实例。
文件的索引(index)用于对文件资源进行定位,它分为逻辑索引和物理索引两种。从冗余备灾的角度出发,一个物理索引被备份到若干个Node中,而这些不同Node上内容相同的物理索引,由于表示的含义是相同的,因此从逻辑上说,算是同一个逻辑索引。
在Solr中,物理索引被叫做Replica,其中副本个数被称为Replication Factor。一个Node可包含多个Replica。
由于物理索引分散在若干不同Node中,因此,其对应的逻辑索引,也分散在若干不同Node中。这些逻辑索引的其中一个实例被称为Core。因此,Core和Replica是一一对应的(尽管它们的含义不同)。显然一个逻辑索引包含了若干个位于不同Node中的Core。
若干个逻辑索引组成了一个Shard。而若干Shard组成一个Collection。Collection是Solr中逻辑层面的最大单元,类似于其他分布式系统中的Task。
属于同一个Shard的若干个Replica中,有且仅有一个Leader,用于协调索引的更新。
上图是SolrCloud模式默认情况下的图示。
其中包括一个名叫gettingstarted的Collection。这个Collection有两个Shard,每个Shard有两个Replica。
这里来个今年美国大选的梗:
记的以前有人说硅谷的政治正确已经到给程序起名字不能带slave了。所以以前熟悉的master slave模式现在很少用了。现在叫leader follower,也可以叫master worker,就是不能有slave。
Quick Start
这是官方Quick Start的摘要版本,相关步骤不做过多解释。
1.启动Solr。
bin/solr start -e cloud -noprompt
2.查看Solr Admin UI。
http://localhost:8983/solr/
2.创建索引。
bin/post -c gettingstarted docs/
索引文件默认存储在example/cloud下。
3.对索引结果进行查询搜索。
Web方式:
http://localhost:8983/solr/#/gettingstarted/query
HTTP方式:
http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=foundation
Luke
Luke是一个查看Lucene/Solr/Elasticsearch索引文件的工具。其官网为:
https://github.com/DmitryKey/luke
SolrCloud的其他细节
1.配置文件在server/solr/configsets/data_driven_schema_configs下。初次启动SolrCloud时,会复制到example/cloud下,但存储形式未知。
2.每个Replica存储的索引文件一般是不同的,因此使用Luke的时候,如果有些数据查询不到的话,可以到其他Replica下查询。
Solr的配置
1.Node配置
solr.xml
2.Core配置
全局配置:core.properties
Solr配置:solrconfig.xml
数据域配置:schema.xml
3.
IKAnalyzer
IKAnalyzer是一个中文分词器。作者:林良益。
官网:
http://git.oschina.net/wltea/IK-Analyzer-2012FF
作者主页:
https://my.oschina.net/linliangyi/home
github上的fork:
https://github.com/yozhao/IKAnalyzer
参考:
http://blog.csdn.net/frankcheng5143/article/details/52292897
这个网页提供了将IKAnalyzer集成到Solr 6的办法,经测试对Solr 6.3也是适用的。
Ansj
Ansj是一个开源的Java中文分词工具,基于中科院的ictclas中文分词算法,比其他常用的开源分词工具(如mmseg4j)的分词准确率更高。
https://github.com/ansjsun/ansj_seg
Solrj
https://wiki.apache.org/solr/Solrj
https://cwiki.apache.org/confluence/display/solr/Using+SolrJ
Lucene
http://lucene.apache.org/core/6_3_0/index.html
Kettle, Solr相关推荐
- ETL工具大全:Kettle、DataCleaner、canal、DataX
数据仓库 传统数据库 数据仓库 特征 用于操作处理,面向OLTP 用于信息处理,面向OLAP 用户 DBA.开发 经理.主管.数据分析人员 功能 日常操作 长期信息需求.决策支持 DB设计 基于ER模 ...
- 大数据系列-CDH环境中SOLR入数据
1 创建集合 SSH远程连接到安装了SOLR的CDH节点. 运行solrctl instancedir --generate /solr/test/GX_SH_TL_TGRYXX_2 ...
- Solr 使用Facet分组过程中与分词的矛盾解决办法
对于一般查询而言 , 分词和存储都是必要的 . 比如 CPU 类型 "Intel 酷睿 2 双核 P7570", 拆分成 "Intel"," 酷睿 & ...
- Solr部署如何启动
Solr部署如何启动 Posted on 一月 10, 2013 in: Solr入门|评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http ...
- Solr定时重建索引和增量更新
新增jar包 新增solr-dataimport-scheduler.jar到所有节点tomcat\webapps\下solr项目的WEB-INF\lib下 下载地址: 为Solr配置监听器 修改所有 ...
- Solr索引和基本数据操作
转自:https://blog.csdn.net/lzx1104/article/details/51460987 1. 介绍 Solr索引可以接收不同的数据来源,包括XML文件,逗号分隔值(CSV) ...
- Solr初始化源码分析-Solr初始化与启动
用solr做项目已经有一年有余,但都是使用层面,只是利用solr现有机制,修改参数,然后监控调优,从没有对solr进行源码级别的研究.但是,最近手头的一个项目,让我感觉必须把solrn内部原理和扩展机 ...
- 如何设置SOLR的高亮 (highlight)?
打开SOLR的核心配置文件: solrconfig.xml 找到 standard request handler 写入以下XML配置代码: [c-sharp] view plaincopy < ...
- solr 3.5 配置及服务器设置
一.solr 的简介 Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr 中存储的资源 ...
最新文章
- ToDictionary的用法
- 当前不会命中断点 源代码与原始版本不一致
- Android数据存储与访问
- oracle游标语法举例,PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)
- error connection reset by peer 104
- 虚拟机非正常关闭 无法打开
- 【TensorFlow】TensorFlow函数精讲之tf.nn.softmax_cross_entropy_with_logits
- 《AIOps在360的落地实践》分享实录
- vue项目中的“Invalid Host header”
- netty支持哪些协议_从零学习netty网络IO通讯开发框架
- Vmware虚拟机使用Nat方式连接笔记本无线网卡
- 解析nextTick---vue3任务调度
- 自适应对比度增强(ACE)算法原理及实现
- 【译】Matplotlib:plotting
- 【Python】Qt国际化ts文件转excel文件(xml转excel)
- 软件测试之“支付功能”测试
- 如何在Windows平台上基于github搭建个人博客平台
- 利用python破解zip压缩文件密码
- 计算机如何安装无线网络适配器,无线网卡驱动怎么安装,教您怎么给电脑安装无线网卡驱动...
- uniapp不是自定义导航栏的情况下,点击返回按钮直接返回首页
热门文章
- 关于蚁剑/菜刀无法连接shell的一种可尝试解决方案
- 抛物线运动JavaScript实现
- node.js热部署
- Vue.JS项目同时使用Element-UI与vue-i18n时实现国际化的方案
- es6的map()方法解释
- Caffe2:python -m caffe2.python.operator_test.relu_op_test
- OpenCv:椭圆上点的计算方程
- 图的存储之链式前向星
- 金融科技监管何时才能完善?
- 华为NFV实验室一周年:打造开放合作生态链 加速NFV产业化