前话有点多。。现有一java项目涉及到了hive部分功能,但是由于hive的查询速度很慢,想把底层hive部分的代码替换为spark,了解到CDH5可以直接将hive引擎更换为spark,更换后想测试一下速度差异,但是在hive命令行输入完sql总是会卡住一段时间,找不到原因,然后就尝试用sparksql代码尝试操作hive,因为刚接触spark,在用代码操作hive的过程中也经历很多错误,现在终于能用javaspark连到我集群的hive了,我看网上spark大多都是以jar包的形式提交到服务器执行,而我只是想把spark的部分穿插进java项目里像java代码一样调用,这样可以吗?跟jar包的形式执行有什么差异吗 另外求一些spark hive 的经验。。。。
3条回答 默认 最新
- 深圳摆地摊er 2017-11-07 10:24关注
我觉得你有点大材小用了,,而且太麻烦了,,
首先,spark有原生的sparkSQL可以直接调用,没必要hive
我觉得你对大数据的计算框架没理解透彻,
spark和hadoop都是一样的,计算框架打成jar包在服务器运行是它们的工作原理,在实际开发中,和java一样,只管写你的代码,等程序
完成部署了执行也是打成jar包直接调用,你看到的jar包形式提交到服务器,是为了让你明白它的工作原理,原本就是为了让你容易理解呢
hive的底层是mr,如果java代码直接调用,原理也是将hive语句转换成mr计算框架,和其他的java程序是一样的
而将hive的引擎换成spark实际上是将mr框架变成rdd去执行程序,这样的话就和sparkSQL一样的,因为sparkSQL就是翻译hql语句成一大串rdd再变成代码执行的。
所以,hive和sparkSQL是让一些不懂大数据分析计算框架原理的人直接调用的,而专业的大数据开发是要编写计算框架,然后打成jar包可以直接在
服务器测试,一般spark开发都会用原生的语言,scala ,,你懂了没
至于spark和hive的经验的话,建议你前期不要贪多,每一个点都很难吃透,hive就是进入大数据最好的入口,前期写hql语句,然后结合mr框架理解hql的原理,慢慢掌握mr框架。毕竟mr是比较简单的大数据分析了,除了效率低以外,其他没毛病。
等你mr玩熟了可以学spark,比mr要抽象很多,但是用起来还挺简单。到这里你可以进行一些简单的统计分析没啥问题了,至于后期的计算分析就要看你的高数水平了,毕竟算法是硬伤。。。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报