成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何使用Hive集成Solr?-創(chuàng)新互聯(lián)

(一)Hive+Solr簡(jiǎn)介

Hive作為Hadoop生態(tài)系統(tǒng)里面離線的數(shù)據(jù)倉(cāng)庫(kù),可以非常方便的使用SQL的方式來(lái)離線分析海量的歷史數(shù)據(jù),并根據(jù)分析的結(jié)果,來(lái)干一些其他的事情,如報(bào)表統(tǒng)計(jì)查詢等。
Solr作為高性能的搜索服務(wù)器,能夠提供快速,強(qiáng)大的全文檢索功能。

(二)為什么需要hive集成solr?

有時(shí)候,我們需要將hive的分析完的結(jié)果,存儲(chǔ)到solr里面進(jìn)行全文檢索服務(wù),比如以前我們有個(gè)業(yè)務(wù),對(duì)我們電商網(wǎng)站的搜索日志使用hive分析完后 存儲(chǔ)到solr里面做報(bào)表查詢,因?yàn)槔锩嫔婕暗剿阉麝P(guān)鍵詞,這個(gè)字段是需要能分詞查詢和不分詞查詢的,通過(guò)分詞查詢可以查看改詞的相關(guān)的產(chǎn)品在某一段時(shí)間內(nèi)的一個(gè)走勢(shì)圖。 有時(shí)候,我們又需要將solr里面的數(shù)據(jù)加載到hive里面,使用sql完成一些join分析功能, 兩者之間優(yōu)劣互補(bǔ),以更好的適應(yīng)我們的業(yè)務(wù)需求。當(dāng)然網(wǎng)上已經(jīng)有一些hive集成solr的開源項(xiàng)目,但由于 版本比較舊,所以無(wú)法在新的版本里面運(yùn)行,經(jīng)過(guò)散仙改造修補(bǔ)后的可以運(yùn)行在最新的版本。

(三)如何才能使hive集成solr?

所謂的集成,其實(shí)就是重寫hadoop的MR編程接口的一些組件而已。我們都知道MR的編程接口非常靈活,而且高度抽象,MR不僅僅可以從HDFS上加載 數(shù)據(jù)源,也可以從任何非HDFS的系統(tǒng)中加載數(shù)據(jù),當(dāng)然前提是我們需要自定義:
InputFormat
OutputFormat
RecordReader
RecordWriter
InputSplit
組件,雖然稍微麻煩了點(diǎn),但從任何地方加載數(shù)據(jù)這件事確實(shí)可以做到,包括mysql,sqlserver,oracle,mongodb, solr,es,redis等等。

上面說(shuō)的是定制Hadoop的MR編程接口,在Hive里面除了上面的一些組件外,還需要額外定義SerDe組件和組裝StorageHandler,在hive里面 SerDe指的是 Serializer and Deserializer,也就是我們所說(shuō)的序列化和反序列化,hive需要使用serde和fileinput來(lái)讀寫hive 表里面的一行行數(shù)據(jù)。
讀的流程:
HDFS files / every source -> InputFileFormat --> --> Deserializer --> Row object
寫的流程:
Row object --> Serializer --> --> OutputFileFormat --> HDFS files / every source

(四)hive集成solr后能干什么?

(1)讀取solr數(shù)據(jù),以hive的支持的SQL語(yǔ)法,能進(jìn)行各種聚合,統(tǒng)計(jì),分析,join等
(2)生成solr索引,一句SQL,就能通過(guò)MR的方式給大規(guī)模數(shù)據(jù)構(gòu)建索引

(五)如何安裝部署以及使用?
源碼在這里,不在粘貼了,已經(jīng)上傳github了,有需要的朋友可以使用 git clonehttps://github.com/qindongliang/hive-solr 后,修改少許pom文件后,執(zhí)行
mvn clean package
命令構(gòu)建生成jar包,并將此jar包拷貝至hive的lib目錄即可

例子如下:
(1)hive讀取solr數(shù)據(jù)

建表:

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),長(zhǎng)安企業(yè)網(wǎng)站建設(shè),長(zhǎng)安品牌網(wǎng)站建設(shè),網(wǎng)站定制,長(zhǎng)安網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,長(zhǎng)安網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

Sql代碼  如何使用Hive集成Solr?

  1. --存在表就刪除

  2. drop table  if exists solr;

  3. --創(chuàng)建一個(gè)外部表

  4. create external table solr (

  5.   --定義字段,這里面的字段需要與solr的字段一致

  6.   rowkey string,

  7.   sname string

  8. )

  9. --定義存儲(chǔ)的storehandler

  10. stored by "com.easy.hive.store.SolrStorageHandler"

  11. --配置solr屬性

  12. tblproperties('solr.url' = 'http://192.168.1.28:8983/solr/a',

  13.                     'solr.query' = '*:*',

  14.                     'solr.cursor.batch.size'='10000',

  15.                     'solr.primary_key'='rowkey'

  16.                        );

  17. 執(zhí)行bin/hive 命令,進(jìn)行hive的命令行終端:

  18. --查詢所有數(shù)據(jù)

  19. select * from solr limit 5;

  20. --查詢指定字段

  21. select rowkey from solr;

  22. --以mr的方式聚合統(tǒng)計(jì)solr數(shù)據(jù)

  23. select sname ,count(*) as c from solr group by sname  order by c desc

(2)使用hive給solr構(gòu)建索引的例子

首先構(gòu)建數(shù)據(jù)源表:

Sql代碼  如何使用Hive集成Solr?

  1. --如果存在就刪除

  2. drop table if exists index_source;

  3. --構(gòu)建一個(gè)數(shù)據(jù)表

  4. CREATE TABLE index_source(id string, yname string,sname string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

  5. --向數(shù)據(jù)源里面導(dǎo)入本地?cái)?shù)據(jù)

  6. load  data local inpath '/ROOT/server/hive/test_solr' into table index_source;

  7. 其次,構(gòu)建solr的關(guān)聯(lián)表:

  8. --刪除已經(jīng)存在的表

  9. drop table  if exists index_solr;

  10. --創(chuàng)建關(guān)聯(lián)solr表

  11. create external table index_solr (

  12.   id string,

  13.   yname string,

  14.   sname string

  15. )

  16. --定義存儲(chǔ)引擎

  17.  stored by "com.easy.hive.store.SolrStorageHandler"

  18. --設(shè)置solr服務(wù)屬性

  19. tblproperties('solr.url' = 'http://192.168.1.28:8983/solr/b',

  20.                     'solr.query' = '*:*',

  21.                     'solr.cursor.batch.size'='10000',

  22.                     'solr.primary_key'='id'

  23.                        );

最后,執(zhí)行下面的sql命令,即可給數(shù)據(jù)源中的數(shù)據(jù),構(gòu)建solr索引:

Sql代碼  如何使用Hive集成Solr?

  1. --注冊(cè)hive-solr的jar包,否則MR方式運(yùn)行的時(shí)候,將不能正常啟動(dòng)

  2. add jar /ROOT/server/hive/lib/hive-solr.jar;

  3. --執(zhí)行插入命令

  4. INSERT OVERWRITE TABLE index_solr SELECT * FROM  index_source ;

  5. --執(zhí)行成功之后,即可在solr的終端界面查看,也可以再hive里面執(zhí)行下面的solr查詢

  6. select * from index_solr limit 10 ;

(六)他們還能其他的框架集成么?

當(dāng)然,作為開源獨(dú)立的框架,我們可以進(jìn)行各種組合, hive也可以和elasticsearch進(jìn)行集成,也可以跟mongodb集成, solr也可以跟spark集成,也可以跟pig集成,但都需要我們自定義相關(guān)的組件才行,思路大致與這個(gè)項(xiàng)目的思路一致。

(七)本次測(cè)試通過(guò)的基礎(chǔ)環(huán)境

Apache Hadoop2.7.1
Apache Hive1.2.1
Apache Solr5.1.0

(八)感謝并參考的資料:

https://github.com/mongodb/mongo-hadoop/tree/master/hive/src/main/java/com/mongodb/hadoop/hive
https://github.com/lucidworks/hive-solr
https://github.com/chimpler/hive-solr
https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide#DeveloperGuide-HowtoWriteYourOwnSerDe

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱:如何使用Hive集成Solr?-創(chuàng)新互聯(lián)
分享URL:http://jinyejixie.com/article46/dcgihg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)頁(yè)設(shè)計(jì)公司、靜態(tài)網(wǎng)站網(wǎng)站建設(shè)、ChatGPT網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
青铜峡市| 鹿邑县| 黑河市| 静安区| 马尔康县| 修文县| 安阳市| 文山县| 郎溪县| 华宁县| 南郑县| 马公市| 昌江| 嘉善县| 罗甸县| 永兴县| 化州市| 清新县| 津市市| 梁山县| 屯留县| 丰原市| 达孜县| 吴江市| 沁水县| 淮滨县| 高阳县| 台江县| 闻喜县| 长寿区| 元朗区| 新乡市| 达州市| 札达县| 清徐县| 含山县| 嘉鱼县| 大邑县| 广河县| 杭州市| 龙井市|