11.1 Spark Sql;jsonRDD转换成DataFrame_心雨先生的博客-程序员秘密

技术标签: 逐渐了解大数据  大数据-Spark  Spark Sql  jsonRDD转换成DataFrame  

Hive是Shark的前身,Shark是SparkSQL的前身

Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由 于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上, 当数据全部load在内存的话,将快10倍以上,因此Shark可以作为交互式 查询应用服务来使用。

除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以 及UDF函数等,已有的HiveSql可以直接进行迁移至Shark上

Shark底层依赖于Hive的解析器,查询优化器,但正是由于SHark的整 体设计架构对Hive的依赖性太强,难以支持其长远发展,比如不能和 Spark的其他组件进行很好的集成,无法满足Spark的一栈式解决大数据处 理的需求

相对于Shark,SparkSQL有什么优势呢?

SparkSQL产生的根本原因,其完全脱离了Hive的限制

SparkSQL支持查询原生的RDD,这点就极为关键了。RDD是Spark平台的核心概念,是 Spark能够高效的处理大数据的各种场景的基础

能够在Scala中写SQL语句。支持简单的SQL语法检查,能够在Scala中写Hive语句访问Hive数 据,并将结果取回作为RDD使用

最进出来另个组合名称:

Spark on Hive

Hive只是作为了存储的角色

SparkSQL作为计算的角色

Hive on Spark

Hive承担了一部分计算(解析SQL,优化SQL...)的和存储

Spark作为了执行引擎的角色


DataFrame创建的方式:

SparkConf conf = new SparkConf().setAppName("DataFrameTest").setMaster("local");

JavaSparkContext jsc =new JavaSparkContext(conf);

SQLContext sc = new SQLContext(jsc);//new一个SQLContext对象

DataFrame df = sc.read().json("test.json");//按json格式读取文件

/**

* 默认只是显示这个DF里面的前十行数据

* 类似Spark core里面的action类算子

*/

df.show();

df.printSchema();//查看表结构类型

df.select("age").show();//相当于 select age from table

//相当于:SELECT name,age+10 as plusAge FROM table;

df.select(df.col("name"),df.col("age").plus(10).as("plusAge")).show();

df.filter(df.col("age").gt(10)).show();//相当于:SELECT * FROM table WHERE age > 10

df.groupBy(df.col("age")).count().show(); //相当于:SELECT COUNT(*) FROM p GROUP BY age

/**

* 将DataFrame注册成一张临时表

* table1这个表,会物化到磁盘吗? 这个表只是逻辑上的。

*/

df.registerTempTable("table1");

sc.sql("SELECT * FROM table1 WHERE age>10").show();


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011418530/article/details/81332189

智能推荐

声音辨识系统专题报告(转载)_zxub的博客-程序员秘密

一, 指导教授与作者群简介 指导教授:游国忠老师 游国忠老师目前担任真理大学专任老师,手边正进行国科会计划.从中央大学博士班毕业後,就被前资科系主任张志勇老师聘请来真理教书.老师曾说过:「该学的专业知识是基本,那是该会的东西,大家学的都一样,但是外文真的要非常好,这很重要,对现在的台湾来说,外文能力要很棒才能赢过其他人」.游老师所学的领域是影像处理,图形辨识,无线网路方面. 作者群:资科系四A 彭

江苏海洋大学计算机考试系统,江苏海洋大学教务管理系统入口https://jwc.hhit.edu.cn/..._weixin_39743423的博客-程序员秘密

一、江苏海洋大学教务管理系统入口及简介江苏海洋大学是一所多科性应用研究型大学。学校创建于1985年,原名淮海大学,1989年在筹建淮海大学的基础上正式建立淮海工学院。1998-2002年期间,根据全省高等教育体制改革总体部署,均具有50年以上办学历史的江苏盐业学校、连云港水产学校和连云港化工高等专科学校先后并入学校,2019年更名为江苏海洋大学。学校先后获得江苏省文明单位标兵、江苏省师资队伍建设先...

mac vscode终端执行全局安装命令报错没有权限EACCESS:permission denied,symlink_qsya的博客-程序员秘密

报错:原因:当前用户没有对全局仓库(文件夹)的权限,赋予权限即可。sudo chown -R [user] [path]

Linux基础学习随笔_aosuizheng8460的博客-程序员秘密

History 输出操作历史上的所有命令Ctrl+p 输出历史命令的向上滚动。Ctrl+n 输出历史命令的向下滚动。Ctrl+b 光标左移Ctrl+f 光标右移Ctrl+a 光标移到行首Ctrl+e 光标移到行尾Ctrl+L 清屏Tab 智能提示Tab 连续按两次,可以列出所有的命令或者该目录下的所有的子目录...

vue的边距怎么设置_vue 拖动调整左右两侧div的宽度_weixin_39785286的博客-程序员秘密

原文是左中右三种情况的拖动。由于项目需要,我删除掉了右边的,直接左右区域拖动调整div宽度1、拖动,调整左右两侧宽度西瓜备注2西瓜备注2export default {name: 'Dashboard',mounted () {this.dragControllerDiv();},methods: {dragControllerDiv: function () {var resize = docu...

随便推点

基于docker的canal-server部署作业_chenzuancong9642的博客-程序员秘密

基于docker的canal-server部署作业1. 目标启动一个canal-server实例监听目标mysql的操作2. 准备工作Ubuntu下安装Docker,并配置国内镜像部署一个mysql实例mysql实例也可以使用docker进行启动(参考菜鸟教程:Docker 安...

Python 元组类型_python 元祖用于_程序猿过家家的博客-程序员秘密

1. 作用按照索引/位置存放多个值,只用于读不用于改2. 定义()内用逗号分隔开多个任意类型的元素t = (1, 1.3, 'aa') # t=tuple((1,1.3,'aa'))print(t, type(t))x = (10) # 单独一个括号代表包含的意思print(x, type(x))t = (10,) # 如果元组中只有一个元素,必须加逗号prin...

服务器崩了只剩下数据文件恢复oracle数据库_系统崩了oracle文件还在_cqwuliu的博客-程序员秘密

一、必须安装相同版本号的数据库。二、最好app的路径也为相同的盘符。三、安装完毕以后命令停止数据库,shutdown immediate 并查看服务里面是否也是停止状态,将服务里面oracle开头的服务全部停止。四、将崩之前的app下的数据文件直接覆盖替换新安装的文件。五、启动服务,看是否能登陆进入用户并查询是否有以前的用户(如果能登陆成功)。六、如果不能正常启动,用自己服务器的init.ora配置文件启动,路径app\Administrator\admin\orcl\pfile教程如下;如还

【Python-docx】隔行删除内容_michael_wq的博客-程序员秘密

记录一个使用python批量更改word内容方法:问题:最近想学英语,也关注了一个讲data science面试的youtuber,但总是看视频有点累,有时候希望可以直接看到重要的咨询,从Youtube上找到了字幕,但中间隔着时间比较影响阅读,但是用鼠标一行一行的删除好麻烦,怎么办?解决:from docx import DocumentfileName = 'xxx'document = Document(fileName + '.docx')for i in range(1, len(d

Error : A1163: Unknown opcode _start , expecting opcode or Macro_unknown opcode loop_Hustudent20080101的博客-程序员秘密

Error   : A1163:  Unknown opcode _start , expecting opcode or Macrostart.S line 1   .globl _startarmasm :     1 00000000 .globl _startError   : A1167:  Invalid line start start.S l

推荐文章

热门文章

相关标签