標籤:spark kafka redis genericobjectpoolconfig genericobjectpool
今天,對照晚上的kafka+Spark streaming+Redis即時資料分析系統實戰(https://www.iteblog.com/archives/1378
主要目的是整合kafka和Spark,Redis。
Redis一直沒用過,所以比較犯難,果然,在前面都沒什麼問題,後面的redis部分,遇到了一個問題:
沒有發現GenericObjectPoolConfig這個類。
百度了好久,一直找不到解決的辦法,後來,才明白,這應該是個maven的庫包,所以,在
http://maven.outofmemory.cn/org.apache.commons/commons-pool2/2.2/
這頁,找到了maven的配置依賴資訊:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.2</version>
</dependency>
果斷在pom.xml中添加,一番動作之後,OK了!
順便研究了一下這個GenericObjectPool玩意,初步瞭解了GenericObjectPool是apache提供的對象池。
對象池建立(參考GenericObjectPool):
public GenericObjectPool(PoolableObjectFactory factory, GenericObjectPool.Config config) : 此方法建立一個GenericObjectPool執行個體,GenericObjectPool類已經實現了和對象池有關的所有核心操作,開發人員可以通過繼承或者封裝的方式來使用它.通過此建構函式,我們能夠清晰的看到,一個Pool中需要指定PoolableObjectFactory 執行個體,以及此對象池的Config資訊.PoolableObjectFactory主要用來"建立新對象",比如當對象池中的對象不足時,可以使用 PoolableObjectFactory.makeObject()方法來建立對象,並交付給Pool管理.
此建構函式執行個體化了一個LinkedList作為"對象池"容器,用來存取"對象".此外還會根據timeBetweenEvictionRunsMillis的值來決定是否啟動一個後台線程,此線程用來周期性掃描pool中的對象列表,已檢測"對象池中的對象"空閑(idle)的時間是否達到了閥值,如果是,則移除此對象.
本文先記錄下幾個相關的網頁,以備不時之需:
1、GenericObjectPool源碼分析:
http://www.cnblogs.com/chenjian5/p/5149312.html
2、GenericObjectPool的javadoc
http://commons.apache.org/proper/commons-pool/api-1.6/org/apache/commons/pool/impl/GenericObjectPool.html
3、GenericObjectPool對象池使用最佳化
http://www.jianshu.com/p/397169e211de
4、apache-common pool的使用
http://www.open-open.com/lib/view/open1415453575730.html
當然啦,最值得保留的,應該是maven的中央資產庫:http://maven.outofmemory.cn/
apache的GenericObjectPool對象池使用經曆!