日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kettle, Solr

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。