记一次Apache Carbondata PR的经历
前言
前段时间有幸接触到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的经历的更多相关文章
- 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案
摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...
- 记2016腾讯 TST 校招面试经历,电面、笔试写代码、技术面、hr面,共5轮
(出处:http://www.cnblogs.com/linguanh/) 前序: 距离 2016 腾讯 TST 校招面试结束已经5天了,3月27日至今,目前还在等待消息.从投简历到两轮电面,再到被 ...
- 记一次内存溢出的分析经历——thrift带给我的痛orz
说在前面的话 朋友,你经历过部署好的服务突然内存溢出吗? 你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗? 你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗? 我知道,你有过! 但是 ...
- 初学者手册-MyBatis踩坑记(org.apache.ibatis.binding.BindingException)
1.参数绑定失败 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bi ...
- 记一次 Apache HUE 优化之因使用 Python 魔术方法而遇到的坑
最近的工作是基于 Apache HUE 做二次开发.刚接手 HUE 的代码的时候,内心是崩溃的:开源的代码,风格很多种, 代码比较杂乱; 虽是基于 Django 开发的,但是项目的结构改变很大; 很多 ...
- 记一次Apache的代码导致生产服务耗时增加
引言 二狗:二胖快醒醒,赶紧看看刚才报警邮件,你上次写的保存用户接口耗时(<二胖的参数校验坎坷之路>)大大上升,赶紧排查下原因. 二胖:好的,马上看,内心戏可十足(心里却在抱怨,大中午的搅 ...
- 记一次PHP“Segmentation fault”调试经历
遇到的问题: 在linux上安装php5.5.26.phalcon2.0扩展.xhprof扩展,均正常安装,并可单独运行.但放在一起运行时出现“Segmentation fault”错误.注:xhpr ...
- 记一次调试串口设备Bug的经历
最近花了差不多1天的时间在折腾一个Bug,该Bug的表象如下: 这个Bug还特别独特,在开发电脑中无提示,在终端用户那里每次使用软件的时候都报这个.仔细思考了一下最近在源码中新添加的功能,没发现有啥特 ...
- 记一次Hbase查询速度优化经历
项目背景: 在这次影像系统中,我们利用大数据平台做的是文件(图片.视频等)批次的增删改查,每个批次都包含多个文件,上传完成以后要添加文件索引(文件信息及批次信息),由于在Hbase存储的过程中,每个文 ...
随机推荐
- 如何在微软Windows平台上打造出你的Linux开发环境(转载)
如何在微软Windows平台上打造出你的Linux开发环境 投递人 itwriter 发布于 2013-12-10 11:18 评论(1) 有348人阅读 原文链接 [收藏] « » 英文原文: ...
- 干货:如何使用N点虚拟管理系统?
N点虚拟主机管理系统怎么用呢?最近有许多朋友问我关于这款虚拟主机管理系统如何使用?在讲如何使用N点虚拟主机管理系统之前,我们先来了解一下N点虚拟主机管理系统的介绍. N点虚拟主机管理系统 ...
- linux rz上传文件及出错解决方案
在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...
- 设置邮箱发送服务|邮箱开始SMTP服务和腾讯云解封25端口的经验总结
原文链接: http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=7dfaaf63-d36f- ...
- Excel截取特定字符后面的值
应该用到三个字符串函数:LEFT.RIGHT.MID 1.LEFT函数: 用法:LEFT(要提取字符所在单元格,从左侧开始提取的个数) 例如:=LEFT(A1,2) 意思是从A1单元格提取前两个字符. ...
- 【Pygame】 简易五子棋
import pygame import sys import time import random pygame.init() screen_size = (800,560) WIDTH = 720 ...
- windows server 2016 无法联网问题
首先,联网分解为两个问题,一.WLAN(无线网).二.以太网(有线网) 一 .WLAN问题解决方案 1.打开服务器管理器 2.添加角色和功能 3.一直点下一步到“功能”,勾选 DirectPlay 和 ...
- Alpha 冲刺报告(3/10)
Alpha 冲刺报告 队名:洛基小队 峻雄(组长) 已完成:开始编写角色的移动脚本 明日计划:继续学习并进行脚本编写 剩余任务:物品背包交互代码 困难:如何把各个模块的脚本整合起来 --------- ...
- 关于Oracle11g R2的学习笔记
进来由于工作需要开始有SQLServer向Oracle转型学习,想把学习写到这里作为记录和备忘. Oracle 11g R2下面都简称:Oracle 第一:Oracle的安装 在安装过程没有 ...
- 3种web会话管理方式
一.基于server端的session管理 在早期web应用中,通常使用服务端session来管理用户的会话.快速了解服务端session: 1) 服务端session是用户第一次访问应用时,服务器就 ...