前言

前段时间有幸接触到Apache Carbondata,试用过程中发现了一个小小的问题,并且又很快的定位到了问题。然后在社区群里反映了下,负责人问愿不愿意提个JIRA,PR,然后我在没有任何开源项目PR过的情况下竟然欣然答应了。(可能跟ZB心有关吧o(╥﹏╥)o)然后来说说这段美妙而又酸爽的经历吧【学习到了很多】!

简介

CarbonData是首个由中国公司发起并捐献给Apache基金会的开源项目,于2017年4月正式成为Apache顶级项目,由华为开源并支持Hadoop的高性能列式存储文件格式,其目的是提供一种统一的数据存储方案,以一份数据同时支持大数据分析的多种应用场景,All In One,并通过多级索引、字典编码、列式存储等特性提升 I/O 扫描和计算性能,实现百亿数据级秒级响应。目前最新版是1.5.1,集成了spark 2.1.0,2.2.1,2.3.2和Hadoop2.7.2,如果是其它版本,则需要自己编译源码!

 优势

      1. 规模比impala+kudu大,基于MPP架构的系统很难超过100节点。

2. 没有进程,不需要单独部署集群,在现有hadoop/spark/presto上即可以使用。

3. 有索引,对多维过滤查询不用全扫描。

4. 有预汇聚,对OLAP

问题

      先抛出来试用过程中出现的问题。carbondata版本:1.5.0,spark 2.3.2     模式:本地 spark-shell

例子:http://carbondata.apache.org/quick-start-guide.html

   

问题描述:

上面是提交JIRA的时候提交的bug再现流程,总的就是在创建 carbondata 的时候,getOrCreateCarbonSession方法默认有两个参数 storePath(存储table数据) metaStorePath(t存储able元数据),不传的话会默认创建,但可能好多人第一次使用的时候不清楚,然后会根据quick start 传一个空字符串,造成的结果就是每一步都显示成功,但最终carbondata表结果查询却是空。通过查看源码,在carbondata\integration\spark2模块中发现 getOrCreateCarbonSession  方法的storePath,metaStorePath参数都只是简单的 null 的判断,所以造成了本地创建storePath存储在空字符串中,导致最终查询不出来结果。

解决方案:

使用 StringUtils.isNotBlank 替代原来的简单 null 判断。

流程

      1) 首先注册Apache JIRA 账号(没有的话),注意在这一定要描述清楚你的问题的是什么,属于什么类型(优先级不一样)  例子: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   --把源码下载到自己置顶的本地目录

c.

git remote add XXXX https://github.com/XXXX/carbondata.git   --跟fork下来的carbondata git仓库关联起来

d.

git fetch --all

     git checkout -b  master   --直接使用master分支(当然也可以创建自己的分支)

   

     e.

     git add 修改的文件

     git commit -m "本次commit说明"

     git rebase -i  分支名字                             -- 这个命令是用来修改 已提交的 commit  的说明的。就是开源项目都有自己严格的规范,不合格需要重新提交commit说明

   f:

    git push 远程主机名 分支名     --提交到远程仓库  本地分支名和远程分支名一致

  

  当然远程提交之前确保测试用例是通过的,然后就可以直接在fork下来的仓库中 点击 Pull request了,一般这的说明都会有严格的模板例子,所以不要擅自改格式。提交了PR之后,就注意邮件消息等回复,需要修改或者不规范的地方需要回工,知道最终被merge。然后恭喜你就成为一名Apache carbondata 的contributors之一了。 那么楼主我自己很荣幸也是拿到了奖励的华为 小天鹅 蓝牙音箱,最主要的是荣誉感满满(虽然是小小的一次修改,但毕竟是第一次嘛,第一次还是很值得留念的博友们)

 项目编译过程中遇到的问题:

  1)在windows编译的的时候 maven 命令:

clean -DskipTests -Pbuild-with-format -Pspark-2.3 -Pwindows install

  2)首先需要本地安装 thrift 0.93,并配置环境变量。  根据 thrift --version查看是否安装成功

  3)import scala 包是有分组和组内排序的,注释也有严格的格式。 不然编译的时候会报 代码style不对,编译通不过的。

Apache carbondata官方网站:   http://carbondata.apache.org/

记一次Apache Carbondata PR的经历的更多相关文章

  1. 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案

    摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...

  2. 记2016腾讯 TST 校招面试经历,电面、笔试写代码、技术面、hr面,共5轮

    (出处:http://www.cnblogs.com/linguanh/) 前序: 距离  2016 腾讯 TST 校招面试结束已经5天了,3月27日至今,目前还在等待消息.从投简历到两轮电面,再到被 ...

  3. 记一次内存溢出的分析经历——thrift带给我的痛orz

    说在前面的话 朋友,你经历过部署好的服务突然内存溢出吗? 你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗? 你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗? 我知道,你有过! 但是 ...

  4. 初学者手册-MyBatis踩坑记(org.apache.ibatis.binding.BindingException)

    1.参数绑定失败 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bi ...

  5. 记一次 Apache HUE 优化之因使用 Python 魔术方法而遇到的坑

    最近的工作是基于 Apache HUE 做二次开发.刚接手 HUE 的代码的时候,内心是崩溃的:开源的代码,风格很多种, 代码比较杂乱; 虽是基于 Django 开发的,但是项目的结构改变很大; 很多 ...

  6. 记一次Apache的代码导致生产服务耗时增加

    引言 二狗:二胖快醒醒,赶紧看看刚才报警邮件,你上次写的保存用户接口耗时(<二胖的参数校验坎坷之路>)大大上升,赶紧排查下原因. 二胖:好的,马上看,内心戏可十足(心里却在抱怨,大中午的搅 ...

  7. 记一次PHP“Segmentation fault”调试经历

    遇到的问题: 在linux上安装php5.5.26.phalcon2.0扩展.xhprof扩展,均正常安装,并可单独运行.但放在一起运行时出现“Segmentation fault”错误.注:xhpr ...

  8. 记一次调试串口设备Bug的经历

    最近花了差不多1天的时间在折腾一个Bug,该Bug的表象如下: 这个Bug还特别独特,在开发电脑中无提示,在终端用户那里每次使用软件的时候都报这个.仔细思考了一下最近在源码中新添加的功能,没发现有啥特 ...

  9. 记一次Hbase查询速度优化经历

    项目背景: 在这次影像系统中,我们利用大数据平台做的是文件(图片.视频等)批次的增删改查,每个批次都包含多个文件,上传完成以后要添加文件索引(文件信息及批次信息),由于在Hbase存储的过程中,每个文 ...

随机推荐

  1. Automate the Sizing of your SGA in Oracle 10g

    How much memory does each of the individual components of the SGA need? Oracle now has methods to de ...

  2. Replication--复制Token

    --创建tokenDECLARE @tokenID AS INT;EXEC sys.sp_posttracertoken @publication = @publication,@tracer_tok ...

  3. python modules and packages

    https://realpython.com/python-modules-packages/ 在软件开发中,一个module是具有一些相关功能的软件集合,比如,当你在开发一个游戏时,可能会有一个模块 ...

  4. docker如何创建支持SSH服务的镜像

    一般情况下,Linux系统管理员通过SSH服务来管理操作系统,但Docker的很多镜像是不带SSH服务的,那么我们怎样才能管理操作系统呢?在第一部分中我们介绍了一些进入容器的办法,比如用attach. ...

  5. ELT探索之旅2 kettle配置

    java环境变量配置: path增加    ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 双击spoon.bat即可

  6. [控件] ColorfulProgressView

    ColorfulProgressView 效果 说明 1. 支持颜色定制 2. 进度条动画可以自己控制 3. 简单易用 源码 https://github.com/YouXianMing/UI-Com ...

  7. Xcode 5.1 编译模拟器以及真机都能使用的静态库

    Xcode 5.1.dmg 下载地址 http://pan.baidu.com/s/1jGJpKm6 1.新建 Framework & Library 工程 我起名叫ShowInfo,下面为其 ...

  8. 制作 OS X El Capitan 启动盘

    制作 OS X El Capitan 启动盘 1. 下载系统盘的dmg格式 2. 直到出现了 3. 在命令行中找到 Install OS X El Capitan.app 4. 格式化你的U盘(U盘名 ...

  9. Linux history命令详解

      history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件. 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定 ...

  10. DoraHacks的笔记

    DoraHacks的笔记