随着Spark1.2的发布,Spark SQL开始正式支持外部数据源。这使得Spark SQL支持了更多的类型数据源,如json, parquet, avro, csv格式。只要我们愿意,我们可以开发出任意的外部数据源来连接到Spark SQL。

示例: 存储json数据。

CREATE TEMPORARY TABLE jsonTable
USING org.apache.spark.sql.json
OPTIONS (
path '/path/to/data.json'
) 详细示例:
1. DDL创建外部数据资源表jsonTable
scala> import org.apache.spark.sql.SQLContext
scala> import sqlContext._
//创建jsonTable外部数据源表,并且指定其数数据源文件是people.json这个json文件,同时指定使用org.apache.spark.sql.json该类型的隐式转化类
scala> val jsonDDL = s"""
| |CREATE TEMPORARY TABLE jsonTable
| |USING org.apache.spark.sql.json
| |OPTIONS (
| | path 'file:///Users/shengli/git_repos/spark/examples/src/main/resources/people.json'
| |)""".stripMargin
jsonDDL: String =
"
CREATE TEMPORARY TABLE jsonTable
USING org.apache.spark.sql.json
OPTIONS (
path 'file:///Users/shengli/git_repos/spark/examples/src/main/resources/people.json'
)" scala> sqlContext.sql(jsonDDL).collect() //创建该外部数据源表jsonTable
res0: Array[org.apache.spark.sql.Row] = Array()

2.查看schemaRDD
scala> val jsonSchema = sqlContext.sql(jsonDDL)
ExecutedCommand来取把数据用spark.sql.json的方式从path加载到jsonTable中。 3.查看各阶段执行计划:
scala> sqlContext.sql("select * from jsonTable").queryExecution
4.sql查询:
scala> sqlContext.sql("select * from jsonTable")
5.执行sql:
scala> sqlContext.sql("select * from jsonTable").collect

API使用:
scala> sqlContext.jsonFile("file:///Users/shengli/git_repos/spark/examples/src/main/resources/people.json")
scala> json.registerTempTable("jsonFile")
scala> sql("select * from jsonFile").collect()
												

Spark SQL External DataSource简介的更多相关文章

  1. Spark SQL External Data Sources JDBC官方实现写测试

    通过Spark SQL External Data Sources JDBC实现将RDD的数据写入到MySQL数据库中. jdbc.scala重要API介绍: /** * Save this RDD ...

  2. Spark SQL External Data Sources JDBC简易实现

    在spark1.2版本中最令我期待的功能是External Data Sources,通过该API可以直接将External Data Sources注册成一个临时表,该表可以和已经存在的表等通过sq ...

  3. Spark SQL External Data Sources JDBC官方实现读测试

    在最新的master分支上官方提供了Spark JDBC外部数据源的实现,先尝为快. 通过spark-shell测试: import org.apache.spark.sql.SQLContext v ...

  4. 【转载】Spark SQL之External DataSource外部数据源

    http://blog.csdn.net/oopsoom/article/details/42061077 一.Spark SQL External DataSource简介 随着Spark1.2的发 ...

  5. [转] Spark sql 内置配置(V2.2)

    [From] https://blog.csdn.net/u010990043/article/details/82842995 最近整理了一下spark SQL内置配.加粗配置项是对sparkSQL ...

  6. 第十一篇:Spark SQL 源码分析之 External DataSource外部数据源

    上周Spark1.2刚发布,周末在家没事,把这个特性给了解一下,顺便分析下源码,看一看这个特性是如何设计及实现的. /** Spark SQL源码分析系列文章*/ (Ps: External Data ...

  7. Spark SQL之External DataSource外部数据源(二)源代码分析

    上周Spark1.2刚公布,周末在家没事,把这个特性给了解一下,顺便分析下源代码,看一看这个特性是怎样设计及实现的. /** Spark SQL源代码分析系列文章*/ (Ps: External Da ...

  8. spark SQL (一)初识 ,简介

    一, 简介 Spark SQL是用于结构化数据处理的Spark模块.与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了关于数据结构和正在执行的计算的更多信息.在内部 ...

  9. Spark SQL概念学习系列之Spark SQL的简介(一)

    Spark SQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQL on Spark. 之前,Shark的查询编译和优化器依赖于Hive,使得Shark不得不 ...

随机推荐

  1. java字符串截取指定下标位置的字符串

    public class A { public static void main(String[] args) { //定义的字符串 String s = "Hello World" ...

  2. LJN数理化生信奥队自传

    LJN数理化生信奥队, 原名“LJN信奥队”,简称“ljnoit”. 联系方式: QQ:3046036317 QQ群:555088375 (Offical群) 701124785 (Vip群) 邮箱: ...

  3. js实现农历时间代码

    var dNow = new Date(); var CalendarData=new Array(100); var madd=new Array(12); var tgString="甲 ...

  4. linux 虚拟机配置固定ip

    参考这边博客: https://blog.csdn.net/u014466635/article/details/80284792 但是这个有个小问题,就是没有配置dns,导致连不上公网 /etc/s ...

  5. Spark在StandAlone模式下提交任务,spark.rpc.message.maxSize太小而出错

    1.错误信息org.apache.spark.SparkException: Job aborted due to stage failure:Serialized task 32:5 was 172 ...

  6. AOP面向切面编程JAVA动态代理实现用户权限管理(实现篇)

    java动态代理机制的功能十分强大,使用动态代理技术能够有效的降低应用中各个对象之间的耦合紧密程度,提高开发的效率以及程序的可维护性,事实上Spring AOP就是建立在Java动态代理的基础之上.其 ...

  7. spring boot 包jar运行

    win根目录下执行 mvn install 生成 可运行jar使用java -jar jar名字 执行项目 ps aux|grep demo.jar  查看进程 kill -9 processid 杀 ...

  8. 判断一个js对象是否是Array

    今天在做题时遇到这个问题,找答案的时候,发现评论里大神好多 . 在开发中,我们经常需要判断某个对象是否为数组类型,总结判断某个对象是否是数组的方法. 1.typeof 操作符 对于Function, ...

  9. Vue中transition和animation的使用

    一:二者的对比 1.动画循环就用animation.在animation中有一个animation-iteration-count属性可以定义循环次数.transition是执行一次以后就不会执行,但 ...

  10. 个人洛谷账号地址——https://www.luogu.org/space/show?uid=181909 附上NOIP查分系统

    个人洛谷地址:       https://www.luogu.org/space/show?uid=181909 NOPI查分地址:      http://bytew.net/OIer/