首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spark SQL发展史

最早来说,Hive的诞生,主要是因为要让那些不熟悉Java工程师,无法深入进行MapReduce编程的数据分析师,能够使用他们熟悉的关系型数据库的SQL模型,来操作HDFS上的数据。...然而,Shark还是它的问题所在,Shark底层依赖了Hive的语法解析器、查询优化器等组件,因此对于其性能的提升还是造成了制约。...3、组件扩展性:对于SQL的语法解析器、分析器以及优化器,用户都可以自己重新开发,并且动态扩展。 在2014年6月1日的时候,Spark宣布了不再开发Shark,全面转向Spark SQL的开发。...这些额外功能包括:使用HiveQL语法来编写和执行SQL,使用Hive中的UDF函数,从Hive表中读取数据。...对于Spark 1.3.x以上的版本,都推荐使用HiveContext,因为其功能更加丰富和完善。 Spark SQL还支持用spark.sql.dialect参数设置SQL的方言。

61220

sparksql源码系列 | 生成resolved logical plan的解析规则整理

之前有分享过一篇笔记:Spark sql规则执行器RuleExecutor(源码解析) 里面有提到Analyzer、Optimizer定义了一系列 rule。...此规则将在以下情况下引发AnalysisException:1.生成器嵌套在表达式中,例如SELECT explode(list) + 1 FROM tbl。...由于计算一个时间列可以映射到多少个窗口是非常重要的,因此我们高估了窗口的数量,并过滤掉时间列不在时间窗口内的行。...这与常规函数解析不同,因为lambda函数只能在函数解析后解析;所以当所有子函数都是解析的或者是一个lambda函数时,我们需要解析高阶函数。...这是最后一种手段,以防主解析批处理中的某些规则无法删除TempResolvedColumn。我们应该在主解析批处理之后立即运行此规则。

3.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java使用sparkspark-sql处理schema数据

    2、spark编程 每一个spark应用程序都包含一个驱动程序(driver program ),他会运行用户的main函数,并在集群上执行各种并行操作(parallel operations) spark...,当spark将一个函数以任务集的形式在不同的节点上并行运行时,会将该函数所使用的每个变量拷贝传递给每一个任务中,有时候,一个变量需要在任务之间,或者驱动程序之间进行共享,spark支持两种共享变量: ...provided 基于spark1.6创建HiveContext客户端。...; import org.apache.spark.sql.SQLContext; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.hive.HiveContext...2、这里在通过spark-sql读取到row数据之后,将schema解析出来,并且映射为hashmap。

    1.1K50

    Spark——底层操作RDD,基于内存处理数据的计算引擎

    除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以及UDF函数等,已有的HiveSql可以直接进行迁移至Shark上Shark底层依赖于Hive的解析器,查询优化器,但正是由于Shark...开窗函数 注意: row_number() 开窗函数是按照某个字段分组,然后取另一字段的前几个值,相当于分组取topN 如果SQL语句里面使用到了开窗函数,那么这个SQL语句必须使用HiveContext...来执行,HiveContext默认情况下在本地无法创建。...窗口函数 实现每隔n秒, 打印nm秒的数据 /** * 窗口函数 * * Author TimePause * Create 2019-12-21 15:28 */ object reduceByKeyAndWindowTest..., 结束后紧跟窗口函数参数, 第一个代表窗口时间长度, 第二个代表窗口的滑动间隔 /* val result = pairwords.reduceByKeyAndWindow((v1: Int

    2.4K20

    SparkSql官方文档中文翻译(java版本)

    SQLContext和HiveContext区别与联系为: SQLContext现在只支持SQL语法解析器(SQL-92语法) HiveContext现在支持SQL语法解析器和HiveSQL语法解析器,...的依赖包,把HiveContext单独拿出来,可以在部署基本的Spark的时候就不需要Hive的依赖包,需要使用HiveContext时再把Hive的各种依赖包加进来。...SQL的解析器可以通过配置spark.sql.dialect参数进行配置。在SQLContext中只能使用Spark SQL提供的”sql“解析器。...在HiveContext中默认解析器为”hiveql“,也支持”sql“解析器。...(sign,ln,cos,etc) 字符串函数(instr,length,printf,etc) 用户自定义函数(UDF) 用户自定义聚合函数(UDAF) 用户自定义序列化格式器(SerDes) 窗口函数

    9.1K30

    Spark SQL实战(04)-API编程之DataFrame

    () } } 1.x的Spark SQL编程入口点 SQLContext HiveContext Spark SQL中,SQLContext、HiveContext都是用来创建DataFrame和Dataset...因此,如果需要访问Hive中的数据,需要使用HiveContext。 元数据管理:SQLContext不支持元数据管理,因此无法在内存中创建表和视图,只能直接读取数据源中的数据。...SQL语言支持:SQLContext和HiveContext都支持Spark SQL中的基本语法,例如SELECT、FROM、WHERE等等。...2.2 Spark SQL的DataFrame优点 可通过SQL语句、API等多种方式进行查询和操作,还支持内置函数、用户自定义函数等功能 支持优化器和执行引擎,可自动对查询计划进行优化,提高查询效率..._,则这些隐式转换函数无法被自动引入当前上下文,就需要手动地导入这些函数,这样会使编码变得比较麻烦。 例如,在进行RDD和DataFrame之间的转换时,如果不导入spark.implicits.

    4.2K20

    Spark on Yarn年度知识整理

    Spark简介 Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map 函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、join...其底层采用Scala这种函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口 Spark on Yarn ?...2、创建Hivecontext并查询数据       import org.apache.spark.sql.hive.HiveContext       val hiveCtx = new org.apache.spark.sql.hive.HiveContext...Spark SQL对SQL语句的处理和关系数据库对SQL语句的解析采用了类似的方法,首先会将SQL语句进行解析,然后形成一个Tree,后续如绑定、优化等处理过程都是对Tree的操作,而操作方法是采用Rule...sqlContext现在只支持SQL语法解析器(Catalyst),hiveContext支持SQL语法和HiveContext语法解析器。

    1.3K20

    Spark知识体系完整解读

    来源:数盟 Spark简介 Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map 函数和reduce函数及计算模型,还提供更为丰富的算子,如filter...Spark初始化 每个Spark应用都由一个驱动器程序来发起集群上的各种并行操作。驱动器程序包含应用的main函数,并且定义了集群上的分布式数据集,以及对该分布式数据集应用了相关操作。...创建Hivecontext并查询数据 importorg.apache.spark.sql.hive.HiveContext valhiveCtx = new org.apache.spark.sql.hive.HiveContext...Spark SQL对SQL语句的处理和关系数据库对SQL语句的解析采用了类似的方法,首先会将SQL语句进行解析,然后形成一个Tree,后续如绑定、优化等处理过程都是对Tree的操作,而操作方法是采用Rule...sqlContext现在只支持SQL语法解析器(Catalyst),hiveContext支持SQL语法和HiveContext语法解析器。

    1K20

    初识 Spark SQL | 20张图详解 Spark SQL 运行原理及数据抽象

    另外,从 API 易用性的角度上看,DataFrame API 提供的是一套高层的关系操作,比函数式的 RDD API 要更加友好、门槛更低。...无法对域对象(丢失域对象)进行操作:将域对象转换为 DataFrame 后,无法从中重新生成它,就是说无法重新生成原始 RDD。...基于上述的两点,从 Spark 1.6 开始出现 DataSet,作为 DataFrame API 的一个扩展,是一个强类型的特定领域的对象,这种对象可以函数式或者关系操作并行地转换,结合了 RDD 和...为了向后兼容,SQLContext 和 HiveContext 也被保存下来,封装在 SparkSession 中。...SparkSession 实质上是 SQLContext 和 HiveContext 的组合(未来可能还会加上 StreamingContext),所以在 SQLContext 和 HiveContext

    10.9K86

    Hive迁移Saprk SQL的坑和改进办法

    Qcon 全球软件开发者大会2016北京站 演讲主题:Spark在360的大规模实践与经验分享 李远策 360-Spark集群概况 360-Spark集群概况 360-Spark应用 MLLib...SparkSQL • 采用HiveContext替换公司90%以上的Hive作业,每天例行1.5W+作业。 • 每个Hive SQL平均3轮MR作业,平均性能提升2~5倍。...因为SparkSQL-HiveContext的SQL解析调用了Hive的ParseDriver. parse完成,所以语法解析上不存在问题。...解决方案: 1、解析AST中的TOK_DIR和TOK_LOCAL_DIR将其转化成新定义的逻辑计划WriteToDirectory 2、将逻辑计划WriteToDirectory转换成新定义的物理计划...解决办法: 通过参数允许用户指定InputFormat,在TableReader中反射生成对应的InputFormat对象并传入到HadoopRDD的构造函数中。

    3K80
    领券