spark sql on hive笔记一
来源:互联网 发布:淘宝千牛发货流程 编辑:程序博客网 时间:2024/03/29 17:00
spark sql on hive非常方便,通过共享读取hive的元数据,我们可以直接使用spark sql访问hive的库和表,做更快的OLAP的分析。
spark 如果想直接能集成sql,最好自己编译下源码:
切换scala的版本为新版本dev/change-scala-version.sh 2.11编译支持hivemvn -Pyarn -Phive -Phive-thriftserver -Phadoop-2.7.3 -Dscala-2.11 -DskipTests clean package
注意,spark sql 可以直接在linux上使用,像执行hive命令一样,进入交互式终端,进行即席查询,进入spark-sql交互式终端命令,并指定以yarn的模式运行:
spark/bin/spark-sql --master yarn
本次使用的spark2.0.2,进入交互式终端之后,可以进行任意的查询分析,但本文的笔记例子,不是基于终端的spark sql分析,而是在scala中使用spark sql on hive,在编程语言里面使用spark sql on hive 灵活性大大提供,能做更多的事情,比如说分析完的结果存储到mysql,hbase或者redis里面,或者分析的过程,需要外部存储的一些数据等等。
开发程序是在IDEA里面写的,项目风格是java+scala混搭采用maven管理,注意不是全scala项目,没有用sbt管理,sbt的国内下载非常慢,能翻墙的同学可以尝试一下。
功能: 使用spark sql读取hive的数据,然后根据某个字段分组,并收集分组结果,然后存储到redis里面。
def main(args: Array[String]): Unit = { val t0=System.nanoTime();//开始时间 val spark=SparkSession .builder() .appName("spark on sql hive ") .enableHiveSupport().getOrCreate();//激活hive支持 import spark.implicits._ import spark.sql sql(" use db")//切换db //注意,collect_set 可以收集分组结果 val ds=sql("select q_id, collect_set(kp_id) as ids from ods_q_quest_kp_rel where kp_id!=0 group by q_id"); ds.cache();//cache起来,便于后续使用 println("size:",ds.collect().length)//打印长度 ds.select("q_id","ids").collect().foreach ( t => { val key=t.getAs[String]("q_id");//获取上面的列映射 val value=t.getAs[Seq[String]]("ids").mkString(",");//获取上面的分组集合 //insert redis } ) val t1=System.nanoTime(); println("insert redis ok! Elapsed time: " + (t1 - t0)/1000/1000 + "ms") //停止 spark.stop(); }
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。
0 0
- spark sql on hive笔记一
- spark sql on hive
- spark sql on hive初探
- Spark SQL on Hive配置
- spark sql on hive安装问题解析
- spark sql on hive配置及其使用
- Spark SQL 与 Spark SQL on Hive 区别
- [Spark]Shark, Spark SQL, Hive on Spark以及SQL On Spark的未来
- Spark-SQL和Hive on Spark, SqlContext和HiveContext
- Shark, Spark SQL, Hive on Spark, 以及SQL on Apache Spark的未来
- Hive on Spark系列一:CDH5.5配置支持hive on spark
- hive on spark部署
- 试用Hive on Spark
- spark on hive 总结
- hive on spark demo
- hive on spark 编译
- spark on hive
- Hive on Spark解析
- 条款8:了解各种不同意义的new和delete
- 12. Takeaways: Setting up development and test sets 小结:建立开发集和测试集(《MACHINE LEARNING YEARNING》翻译)
- 一场自我发现的旅程gentle版
- 160. Intersection of Two Linked Lists
- Oracle获取时间表
- spark sql on hive笔记一
- 第十五周oj训练——写一函数,将两个字符串连接(1052)
- D Pairs(FFT)
- poj2653——Pick-up sticks(判断线段是否相交)
- OpenCV学习笔记(四)插值性能对比(resize)
- 0007算法笔记——【分治法】最接近点对问题
- 机器学习中的算法(1)-决策树模型组合之随机森林与GBDT
- android 拍照的图片保存到系统图库
- Python进行数据的多表去重示例