?前言
? ? ? ? 前段時(shí)間有幸接觸到Apache Carbondata域携,試用過程中發(fā)現(xiàn)了一個(gè)小小的問題,并且又很快的定位到了問題。然后在社區(qū)群里反映了下俊啼,負(fù)責(zé)人問愿不愿意提個(gè)JIRA,PR,然后我在沒有任何開源項(xiàng)目PR過的情況下竟然欣然答應(yīng)了左医。(可能跟ZB心有關(guān)吧o(╥﹏╥)o)然后來說說這段美妙而又酸爽的經(jīng)歷吧【學(xué)習(xí)到了很多】授帕!
簡介
? ? ? ??CarbonData是首個(gè)由中國公司發(fā)起并捐獻(xiàn)給Apache基金會的開源項(xiàng)目,于2017年4月正式成為Apache頂級項(xiàng)目浮梢,由華為開源并支持Hadoop的高性能列式存儲文件格式豪墅,其目的是提供一種統(tǒng)一的數(shù)據(jù)存儲方案,以一份數(shù)據(jù)同時(shí)支持大數(shù)據(jù)分析的多種應(yīng)用場景黔寇,All In One偶器,并通過多級索引、字典編碼缝裤、列式存儲等特性提升 I/O 掃描和計(jì)算性能屏轰,實(shí)現(xiàn)百億數(shù)據(jù)級秒級響應(yīng)。目前最新版是1.5.1憋飞,集成了spark 2.1.0霎苗,2.2.1,2.3.2和Hadoop2.7.2榛做,如果是其它版本唁盏,則需要自己編譯源碼!
?優(yōu)勢
? ? ??1. 規(guī)模比impala+kudu大检眯,基于MPP架構(gòu)的系統(tǒng)很難超過100節(jié)點(diǎn)厘擂。
? ? ? ?2. 沒有進(jìn)程,不需要單獨(dú)部署集群锰瘸,在現(xiàn)有hadoop/spark/presto上即可以使用刽严。
? ? ? ?3. 有索引,對多維過濾查詢不用全掃描避凝。
? ? ? ?4. 有預(yù)匯聚舞萄,對OLAP
問題
?先拋出來試用過程中出現(xiàn)的問題。carbondata版本:1.5.0管削,spark 2.3.2? ? ?模式:本地 spark-shell
? ? ? ?例子:http://carbondata.apache.org/quick-start-guide.html
? ? ? ? 問題描述:? ?
? ? ? ? 上面是提交JIRA的時(shí)候提交的bug再現(xiàn)流程倒脓,總的就是在創(chuàng)建 carbondata 的時(shí)候,getOrCreateCarbonSession方法默認(rèn)有兩個(gè)參數(shù)?storePath(存儲table數(shù)據(jù)) metaStorePath(t存儲able元數(shù)據(jù))含思,不傳的話會默認(rèn)創(chuàng)建崎弃,但可能好多人第一次使用的時(shí)候不清楚,然后會根據(jù)quick start 傳一個(gè)空字符串,造成的結(jié)果就是每一步都顯示成功吊履,但最終carbondata表結(jié)果查詢卻是空安皱。通過查看源碼,在carbondata\integration\spark2模塊中發(fā)現(xiàn)?getOrCreateCarbonSession? 方法的storePath艇炎,metaStorePath參數(shù)都只是簡單的 null 的判斷酌伊,所以造成了本地創(chuàng)建storePath存儲在空字符串中,導(dǎo)致最終查詢不出來結(jié)果缀踪。
? ? ? ?解決方案:
? ? ? ?使用 StringUtils.isNotBlank 替代原來的簡單 null 判斷居砖。
流程
? ? ??1) 首先注冊Apache JIRA 賬號(沒有的話),注意在這一定要描述清楚你的問題的是什么驴娃,屬于什么類型(優(yōu)先級不一樣)? 例子:https://issues.apache.org/jira/projects/CARBONDATA/issues/CARBONDATA-3119?filter=allopenissues
? ? ? ?2)fork 奏候,https://github.com/apache/carbondata。
? ? 3)a. git config:? ??
$ git config --global user.email "xxxxx@163.com"? ? ?--輸入自己的git郵箱
$ git config --global user.name "xxxxx"? ? ? ? ? ? ? ? ? ? ?--輸入自己的git name
? ? ? ?b. git clone
? ? ? ?$ git clone https://github.com/apache/carbondata.git? ?--把源碼下載到自己置頂?shù)谋镜啬夸?/p>
? ? ? c.
? ? ??git remote add XXXX https://github.com/XXXX/carbondata.git? ?--跟fork下來的carbondata git倉庫關(guān)聯(lián)起來
? ? ?d.
? ? ?git fetch --all
? ? ?git checkout -b? master? ?--直接使用master分支(當(dāng)然也可以創(chuàng)建自己的分支)
? ?
? ? ?e.
? ? ?git add 修改的文件
? ? ?git commit -m "本次commit說明"
? ? ?git rebase -i? 分支名字? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-- 這個(gè)命令是用來修改 已提交的?commit? 的說明的唇敞。就是開源項(xiàng)目都有自己嚴(yán)格的規(guī)范蔗草,不合格需要重新提交commit說明
? ?f:
? ? git push 遠(yuǎn)程主機(jī)名 分支名? ? ?--提交到遠(yuǎn)程倉庫? 本地分支名和遠(yuǎn)程分支名一致
??
? 當(dāng)然遠(yuǎn)程提交之前確保測試用例是通過的,然后就可以直接在fork下來的倉庫中 點(diǎn)擊 Pull request了疆柔,一般這的說明都會有嚴(yán)格的模板例子咒精,所以不要擅自改格式。提交了PR之后旷档,就注意郵件消息等回復(fù)模叙,需要修改或者不規(guī)范的地方需要回工,知道最終被merge鞋屈。然后恭喜你就成為一名Apache carbondata 的contributors之一了范咨。 那么樓主我自己很榮幸也是拿到了獎(jiǎng)勵(lì)的華為 小天鵝 藍(lán)牙音箱,最主要的是榮譽(yù)感滿滿(雖然是小小的一次修改厂庇,但畢竟是第一次嘛渠啊,第一次還是很值得留念的博友們)
?項(xiàng)目編譯過程中遇到的問題:
?1)在windows編譯的的時(shí)候 maven 命令:
clean -DskipTests -Pbuild-with-format -Pspark-2.3-Pwindows install
? 2)首先需要本地安裝 thrift 0.93,并配置環(huán)境變量宋列。? 根據(jù) thrift --version查看是否安裝成功
? 3)import scala 包是有分組和組內(nèi)排序的昭抒,注釋也有嚴(yán)格的格式。 不然編譯的時(shí)候會報(bào) 代碼style不對炼杖,編譯通不過的。
Apache carbondata官方網(wǎng)站:? ?http://carbondata.apache.org/