我是靠谱客的博主 友好舞蹈,最近开发中收集的这篇文章主要介绍11.1 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();


 

最后

以上就是友好舞蹈为你收集整理的11.1 Spark Sql;jsonRDD转换成DataFrame的全部内容,希望文章能够帮你解决11.1 Spark Sql;jsonRDD转换成DataFrame所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部