欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

ApachePig和Solr問(wèn)題筆記(一)

記錄下最近兩天散仙在工作中遇到的有關(guān)Pig0.12.0和Solr4.10.2一些問(wèn)題總共有3個(gè)如下

1問(wèn)題一 如何Pig中使用ASCII和十六進(jìn)制hexadecimal的分隔符進(jìn)行加載和切分?jǐn)?shù)據(jù)

注意關(guān)于這個(gè)問(wèn)題在Pig中會(huì)反應(yīng)到2個(gè)場(chǎng)景中
第一 在Pig加載load數(shù)據(jù)時(shí)候 。
第二 在Pig處理split或則正則截取數(shù)據(jù)的時(shí)候。

先稍微說(shuō)下為啥使用十六進(jìn)制的字段分隔符而不是我們常見(jiàn)的空格逗號(hào)冒號(hào)分號(hào)#號(hào)等這些字符雖然也可以使用但是如果我們數(shù)據(jù)中有和這些符號(hào)沖突的數(shù)據(jù)那么在解析時(shí)就會(huì)發(fā)生一些出人意料的Bug所以為了保險(xiǎn)起見(jiàn)選用肉眼不可讀的十六進(jìn)制的數(shù)據(jù)是一個(gè)不錯(cuò)的選擇當(dāng)然這也是針對(duì)場(chǎng)景來(lái)說(shuō)的看情況決定。

關(guān)于詳細(xì)的ASCII和十六進(jìn)制二進(jìn)制八進(jìn)制十進(jìn)制的文檔介紹請(qǐng)參考維基百科全書(shū)。

下面繼續(xù)回到正題本例中我們的數(shù)據(jù)格式是這樣存儲(chǔ)的

為瓊中黎族等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及瓊中黎族網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站制作、瓊中黎族網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

Java代碼 Apache Pig和Solr問(wèn)題筆記(一) Apache Pig和Solr問(wèn)題筆記(一)Apache Pig和Solr問(wèn)題筆記(一)

  1. 每行一條記錄,UTF-8編碼   

  2. 每條記錄都包括字段名和字段內(nèi)容   

  3. 字段之間用ascii碼1分隔   

  4. 字段名與內(nèi)容之間用ascii碼2分隔  

每行一條記錄,UTF-8編碼
每條記錄都包括字段名和字段內(nèi)容
字段之間用ascii碼1分隔
字段名與內(nèi)容之間用ascii碼2分隔



一個(gè)在eclipse中的小例子如下

Java代碼 Apache Pig和Solr問(wèn)題筆記(一) Apache Pig和Solr問(wèn)題筆記(一)Apache Pig和Solr問(wèn)題筆記(一)

  1. public static void main(String[] args) {   

  2.     //注意\1和\2在我們的IDE中NotePad++中Linux的終端設(shè)備的界面中都會(huì)呈現(xiàn)不同的  

  3.     //顯示方式大家可以在維基百科中詳細(xì)了解下  

  4.     //數(shù)據(jù)示例  

  5.     String s="prod_cate_disp_id019";   

  6.     //split規(guī)則  

  7.     String ss[]=s.split("\2");   

  8.     for(String st:ss){   

  9.         System.out.println(st);   

  10.     }   

  11. }  

	public static void main(String[] args) {
		//注意\1和\2在我們的IDE中NotePad++中Linux的終端設(shè)備的界面中都會(huì)呈現(xiàn)不同的
		//顯示方式大家可以在維基百科中詳細(xì)了解下
		//數(shù)據(jù)示例
		String s="prod_cate_disp_id019";
		//split規(guī)則
		String ss[]=s.split("\2");
		for(String st:ss){
			System.out.println(st);
		}
	}




關(guān)于load函數(shù)加載時(shí)支持的分隔符類型大家可以參考官網(wǎng)的文檔
下面看在Pig腳本的代碼

Java代碼 Apache Pig和Solr問(wèn)題筆記(一) Apache Pig和Solr問(wèn)題筆記(一)Apache Pig和Solr問(wèn)題筆記(一)

  1. --Hadoop技術(shù)交流群415886155  

  2. /*Pig支持的分隔符包括 

  3. 1,任意字符串 

  4. 2,任意轉(zhuǎn)義字符 

  5. 3dec的字符\\u001 或者 \\u002 

  6. 4十六進(jìn)行字符 \\x0A  \\x0B 

  7. */  

  8. --注意這個(gè)load時(shí)的分隔符代表ASCII的1作為Pig里面的dec直接解析方式   

  9. a = load '/tmp/dongliang/20150401/20150301/tmp_search_keywords_cate_stat/' using PigStorage('\\u001') ;   

  10.   

  11. /** 

  12.  

  13. 注意下面的分割符^B這個(gè)符號(hào)是脫元字符只會(huì)在終端設(shè)備上 

  14. 顯示這個(gè)符號(hào)代表ASCII的2 

  15. */  

  16. a = foreach a generate   REGEX_EXTRACT ($0, '(.*)^B(.*)', 2) as time ,   

  17.                          REGEX_EXTRACT ($1, '(.*)^B(.*)', 2) as kw ,   

  18.                          REGEX_EXTRACT ($2, '(.*)^B(.*)', 2) as ic ,   

  19.                          REGEX_EXTRACT ($3, '(.*)^B(.*)', 2) as cid,   

  20.                          REGEX_EXTRACT ($4, '(.*)^B(.*)', 2) as cname,   

  21.                          REGEX_EXTRACT ($5, '(.*)^B(.*)', 2) as pname,   

  22.                          REGEX_EXTRACT ($6, '(.*)^B(.*)', 2) as snt,   

  23.                          REGEX_EXTRACT ($7, '(.*)^B(.*)', 2) as cnt,   

  24.                          REGEX_EXTRACT ($8, '(.*)^B(.*)', 2) as fnt,   

  25.                          REGEX_EXTRACT ($9, '(.*)^B(.*)', 2) as ant,   

  26.                          REGEX_EXTRACT ($10, '(.*)^B(.*)', 2) as pnt ;   

  27.   

  28. --獲取字符串長(zhǎng)度   

  29. a = foreach a generate SIZE(cid) as len;   

  30. --按長(zhǎng)度分組   

  31. b = group a by len;   

  32. --統(tǒng)計(jì)各個(gè)長(zhǎng)度下的數(shù)量   

  33. c = foreach b generate group, COUNT($1);   

  34. --輸出打印   

  35. dump c;  

--Hadoop技術(shù)交流群415886155
/*Pig支持的分隔符包括
1,任意字符串
2,任意轉(zhuǎn)義字符
3dec的字符\\u001 或者 \\u002
4十六進(jìn)行字符 \\x0A  \\x0B
*/
--注意這個(gè)load時(shí)的分隔符代表ASCII的1作為Pig里面的dec直接解析方式
a = load '/tmp/dongliang/20150401/20150301/tmp_search_keywords_cate_stat/' using PigStorage('\\u001') ;

/**

注意下面的分割符^B這個(gè)符號(hào)是脫元字符只會(huì)在終端設(shè)備上
顯示這個(gè)符號(hào)代表ASCII的2
*/
a = foreach a generate   REGEX_EXTRACT ($0, '(.*)^B(.*)', 2) as time ,
                         REGEX_EXTRACT ($1, '(.*)^B(.*)', 2) as kw ,
                         REGEX_EXTRACT ($2, '(.*)^B(.*)', 2) as ic ,
                         REGEX_EXTRACT ($3, '(.*)^B(.*)', 2) as cid,
                         REGEX_EXTRACT ($4, '(.*)^B(.*)', 2) as cname,
                         REGEX_EXTRACT ($5, '(.*)^B(.*)', 2) as pname,
                         REGEX_EXTRACT ($6, '(.*)^B(.*)', 2) as snt,
                         REGEX_EXTRACT ($7, '(.*)^B(.*)', 2) as cnt,
                         REGEX_EXTRACT ($8, '(.*)^B(.*)', 2) as fnt,
                         REGEX_EXTRACT ($9, '(.*)^B(.*)', 2) as ant,
                         REGEX_EXTRACT ($10, '(.*)^B(.*)', 2) as pnt ;

--獲取字符串長(zhǎng)度
a = foreach a generate SIZE(cid) as len;
--按長(zhǎng)度分組
b = group a by len;
--統(tǒng)計(jì)各個(gè)長(zhǎng)度下的數(shù)量
c = foreach b generate group, COUNT($1);
--輸出打印
dump c;




2問(wèn)題二如何在Apache Solr中查詢某個(gè)不分詞的field的長(zhǎng)度有多少個(gè)記錄

Solr里面并沒(méi)有直接提供這樣類似JAVA里的lenth這樣的函數(shù)或者Pig里面的SIZE這樣的函數(shù)那么我們應(yīng)該如何查詢呢

Solr雖然不直接支持這樣的查詢但是我們可以通過(guò)正則查詢來(lái)變相的實(shí)現(xiàn)這個(gè)目的用法如下
1查詢固定長(zhǎng)度 cid:/.{6}/ 只過(guò)濾長(zhǎng)度為6的記錄
2查詢范圍長(zhǎng)度 cid:/.{6,9}/ 只過(guò)濾長(zhǎng)度6到9的記錄
3查詢最少多少長(zhǎng)度以上的cid:/.{6}.*/ 長(zhǎng)度最少為6的



3問(wèn)題三在使用Pig+MapReduce向Solr中批量添加索引時(shí)發(fā)現(xiàn)無(wú)任何錯(cuò)誤異常但是索引里卻沒(méi)任何數(shù)據(jù)?

這是一個(gè)比較詭異的問(wèn)題本來(lái)散仙覺(jué)得應(yīng)該是程序出問(wèn)題了但是后來(lái)發(fā)現(xiàn)同樣的代碼向另外一個(gè)collection里添加數(shù)據(jù)就很正常查看solr的log發(fā)現(xiàn)里面打印的一些信息如下

Java代碼 Apache Pig和Solr問(wèn)題筆記(一) Apache Pig和Solr問(wèn)題筆記(一)Apache Pig和Solr問(wèn)題筆記(一)

  1. INFO  - 2015-04-01 21:08:36.097; org.apache.solr.update.DirectUpdateHandler2; start commit{,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false,prepareCommit=false}   

  2. INFO  - 2015-04-01 21:08:36.098; org.apache.solr.update.DirectUpdateHandler2; No uncommitted changes. Skipping IW.commit.   

  3. INFO  - 2015-04-01 21:08:36.101; org.apache.solr.core.SolrCore; SolrIndexSearcher has not changed - not re-opening: org.apache.solr.search.SolrIndexSearcher   

  4. INFO  - 2015-04-01 21:08:36.102; org.apache.solr.update.DirectUpdateHandler2; end_commit_flush  

INFO  - 2015-04-01 21:08:36.097; org.apache.solr.update.DirectUpdateHandler2; start commit{,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false,prepareCommit=false}
INFO  - 2015-04-01 21:08:36.098; org.apache.solr.update.DirectUpdateHandler2; No uncommitted changes. Skipping IW.commit.
INFO  - 2015-04-01 21:08:36.101; org.apache.solr.core.SolrCore; SolrIndexSearcher has not changed - not re-opening: org.apache.solr.search.SolrIndexSearcher
INFO  - 2015-04-01 21:08:36.102; org.apache.solr.update.DirectUpdateHandler2; end_commit_flush




解釋下上面的信息的意思大概就是說(shuō)在數(shù)據(jù)索引完了但是沒(méi)有發(fā)現(xiàn)有commit的數(shù)據(jù)所以跳過(guò)commit這一點(diǎn)在程序跑的時(shí)候是非常奇怪的因?yàn)閿?shù)據(jù)源HDFS里最少有110萬(wàn)的數(shù)據(jù)怎么會(huì)沒(méi)有數(shù)據(jù)呢 然后散仙通過(guò)谷歌搜索發(fā)現(xiàn)也有人發(fā)現(xiàn)類似的奇怪情況無(wú)任何異常的情況下重建索引成功卻在索引里沒(méi)有看見(jiàn)任何數(shù)據(jù)而且最為疑惑的是這幾個(gè)網(wǎng)上已經(jīng)有的案例竟然沒(méi)有一個(gè)有解決方案。

沒(méi)辦法了只好再次查看程序這一次散仙把中間處理好需要建索引的數(shù)據(jù)給打印出來(lái)看一下到底什么情況結(jié)果打印出來(lái)的都是一行行空數(shù)據(jù)原來(lái)在使用正則截取數(shù)據(jù)時(shí)原來(lái)的分隔符失效了所以導(dǎo)致截取不到數(shù)據(jù)這下問(wèn)題基本定位了solr索引里沒(méi)有數(shù)據(jù)肯定是因?yàn)楸緛?lái)就沒(méi)有數(shù)據(jù)提交導(dǎo)致的那個(gè)奇怪的log發(fā)生結(jié)果在散仙把這個(gè)bug修復(fù)之后再次重建索引發(fā)現(xiàn)這次果然成功了在Solr中也能正常查詢到數(shù)據(jù)。如果你也發(fā)生了類似的情況請(qǐng)首先確保你能正確的獲取到數(shù)據(jù)不論是從遠(yuǎn)程讀取的還是解析wordexcel或者txt里面的數(shù)據(jù)都要首先確定能夠正確的把數(shù)據(jù)解析出來(lái)然后如果還是沒(méi)建成功可根據(jù)solr的log或者拋出的異常提示進(jìn)行修復(fù) 。

Apache Pig和Solr問(wèn)題筆記(一) 

網(wǎng)頁(yè)名稱:ApachePig和Solr問(wèn)題筆記(一)
網(wǎng)址分享:http://aaarwkj.com/article18/igsggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、響應(yīng)式網(wǎng)站、虛擬主機(jī)、品牌網(wǎng)站制作、面包屑導(dǎo)航網(wǎng)站制作

廣告

聲明:本網(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)

h5響應(yīng)式網(wǎng)站建設(shè)
国产精品国产成人生活片| 欧美伊人久久大综合精品| 久久精品国产亚洲夜色av网站 | 免费人成网站视频在线观看不卡| 人妻丰满熟妇九九久久| 婷婷国产成人久久精品激情| 亚洲一区二区四区乱码在线| 亚洲国产综合亚洲综合国产| 亚洲天堂av现在观看| 肉肉开房天天操夜夜操| 欧美日韩另类激情免费| 久久亚洲av电影网站| 真实国产熟女一区二区三区| 天堂社区人妻在线亚洲| 人妻伦理一区二区三区| 少妇高潮叫床免费网站在线观看 | 日本一区二区手机在线| 国内成人免费在线视频| 国产自拍精品视频免费观看| 日本女优邻居人妻中文字幕| 欧美高清视频免费播放| 久久热最新免费观看视频| 蜜臀视频在线观看免费| 日本一区二区三区不卡在线| 国产91九色蝌蚪在线观看| 欧美亚洲中文字幕高清| 久久亚洲中文字幕精品一区四区| 日本区一区二区三视频| 亚洲欧美中文日韩一区| 青青草免费视频观看在线| av在线高清免费观看| 日本熟熟妇丰满人妻啪啪| 欧美黄色影院在线观看| 热久久视频这里只有精品| 日韩不伦高清一区二区三区| 亚洲成在人线免费观看| 91中文字幕国产日韩| 日韩欧美国产综合第一页| 九九九热免费在线观看| 黄色高清无遮挡在线观看| 亚洲成av人片一区二久久精品|