SparkSQL学习记录之三
来源:互联网 发布:手机 电脑 相册软件 编辑:程序博客网 时间:2024/06/01 09:57
这次我们讲讲SparkSQL的数据源。
通过DataFrame接口,SparkSQL支持操作各种的数据源。DataFrame能够在普通的RDDs上被操作,也可被注册成一个临时表。将DataFrame注册成一个表,可以允许你使用SQL查询。下来我们讲讲如何使用一般的方法来加载和额保存数据,然后研究怎么指定要操作的数据源的选项。
为了简单说明,默认的数据源(parquet格式)将被用在所有的演示中。
val df = sqlContext.read.load("examples/src/main/resources/users.parquet")df.select("name", "favorite_color").write.save("namesAndFavColors.parquet")
你也可以给数据源传递一个额外的参数,来手动的制定数据源。数据源被指定需要写它的全部修饰名称,但是在内置数据源,你可以写它的名称的简写。而类型之间可以互相转换。val df = sqlContext.read.format("json").load("examples/src/main/resources/people.json")df.select("name", "age").write.format("parquet").save("namesAndAges.parquet")
相比使用读取数据的API来加载数据到DataFrame去查询它,你也可以使用SQL直接查询该文件。val df = sqlContext.sql("SELECT * FROM parquet.`examples/src/main/resources/users.parquet`")
保存操作可以使用SaveMode,来指定如何处理存在的,参与的数据。我们要知道保存模式没有利用任何的锁机制也不是一个原子操作,这一点很重要。此外,当执行一个overwrite,在写新数据之前,旧数据会被删除。SaveMode.ErrorIfExists
(default)"error"
(default)当保存dataframe到一个数据源时,如果该文件已存在,则一个异常会被抛出。SaveMode.Append
"append"
当保存dataframe到一个数据源时,如果该文件已经存在,则会数据会追加到该数据之后。SaveMode.Overwrite
"overwrite"
覆盖模式意味着当保存dataframe到一个数据源时,如果数据或者表已经存在了,存在的数据会被新来的dataframe数据所覆盖。SaveMode.Ignore
"ignore"
忽略模式意味着当保存dataframe到一个数据源时,如果数据或者表已经存在了,新的dataframe数据不会保存,不会改变存在的数据。当使用HiveContext来进行工作,DataFrame能够以saveAsTable命令来被保存到一个持久化的表中。与registerTempTable
命令不同,saveAsTable会持久化dataframe的数据,并且在HiveMetastore中创建数据的指针。当你的spark应用重启之后,只要你一直维持对元数据的连接,持久化的表依然存在。通过在SQLContext使用table方法,传递table的名字,那么dataframe所关联的持久化表会被创建。默认情况下,saveAsTable会创建一个管理表,数据的位置将要被云存储所控制。当一个表被删除,管理表会自动删除里面的数据。
0 0
- SparkSQL学习记录之三
- sparkSQL学习记录之二
- sparkSQL学习记录之一
- Spark学习总结三 SparkSql操作elasticsearch
- oracle学习记录之三
- SparkSQL学习
- sparkSQL1.1入门之三:sparkSQL组件之解析
- sparkSQL1.1入门之三:sparkSQL组件之解析
- sparkSQL1.1入门之三:sparkSQL组件之解析
- mongodb学习记录之三:索引
- DP之背包学习记录(三)
- Redis学习记录之下载安装(三)
- Redis学习记录之配置文件(三)
- C语言初步学习记录之三
- Spark-SparkSQL深入学习系列三(转自OopsOutOfMemory)
- SparkSQL编程指南之Java篇三-数据源(下)
- Spark-Avro学习1之使用SparkSQL读取AVRO文件
- Spark学习-SparkSQL--01-SparkSQL CLI
- LeetCode 3.5 Longest Palindromic Substring
- xml绘制总结——shape,selector,layer-list
- Android API Guides---Property Animation
- hdu5045(状态压缩dp)
- unity undo 操作
- SparkSQL学习记录之三
- java中的匿名内部类
- unity gameobject transform
- HTML控件事件一览表
- HDU 5556 Land of Farms 最大团
- 什么是Run Loop
- struts1.0 dispatchAction、全局跳转、动态表单
- JavaScript动态函数
- javacsv读写csv