SparkSQL读写外部数据源-基本操作load和save
数据源-基本操作load和save
object BasicTest {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder()
.appName("BasicTest")
.master("local")
.getOrCreate()
//最基本的读取(load)和保存(write)操作,操作的文件的数据格式默认是parquet
val sessionDF = spark.read.load(s"${BASE_PATH}/trackerSession")
sessionDF.show()
sessionDF.select("ip", "cookie").write.save(s"${BASE_PATH}/trackerSession_ip_cookie")
//可以读取多个文件目录下的数据文件
val multiSessionDF = spark.read.load(s"${BASE_PATH}/trackerSession",
s"${BASE_PATH}/trackerSession_ip_cookie")
multiSessionDF.show()
//读取的时候指定schema
val schema = StructType(StructField("ip", StringType) :: Nil)
val specSessionDF = spark.read.schema(schema).load(s"${BASE_PATH}/trackerSession")
specSessionDF.show()
//指定数据源数据格式
//读取json文件, 且将读取出来的数据保存为parquet文件
val deviceInfoDF = spark.read.format("json").load(s"${BASE_PATH}/IoT_device_info.json")
spark.read.json(s"${BASE_PATH}/IoT_device_info.json").show()
deviceInfoDF.write.format("orc").save(s"${BASE_PATH}/iot")
deviceInfoDF.write.orc(s"${BASE_PATH}/iot2")
//option传递参数,改变读写数据源的行为
spark.read.option("mergeSchema", "true").parquet(s"${BASE_PATH}/trackerSession")
deviceInfoDF.write.option("compression", "snappy").parquet(s"${BASE_PATH}/iot2_parquet")
val optsMap = Map("mergeSchema" -> "mergeSchema")
spark.read.options(optsMap).parquet("")
//SaveMode
//SaveMode.ErrorIfExists(对应着字符串"error"):表示如果目标文件目录中数据已经存在了,则抛异常(这个是默认的配置)
//SaveMode.Append(对应着字符串"append"):表示如果目标文件目录中数据已经存在了,则将数据追加到目标文件中
//SaveMode.Overwrite(对应着字符串"overwrite"):表示如果目标文件目录中数据已经存在了,则用需要保存的数据覆盖掉已经存在的数据
//SaveMode.Ignore(对应着字符串为:"ignore"):表示如果目标文件目录中数据已经存在了,则不做任何操作
deviceInfoDF.write.option("compression", "snappy").mode(SaveMode.Ignore).parquet(s"${BASE_PATH}/iot/iot2_parquet")
spark.read.parquet(s"${BASE_PATH}/iot/iot2_parquet").show()
deviceInfoDF.write.option("compression", "snappy").mode("ignore").parquet(s"${BASE_PATH}/iot/iot2_parquet")
spark.stop()
}
}

SparkSQL读写外部数据源-基本操作load和save的更多相关文章
- SparkSQL读写外部数据源--csv文件的读写
object CSVFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .ap ...
- SparkSQL读写外部数据源-json文件的读写
object JsonFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .m ...
- SparkSQL读写外部数据源-jext文件和table数据源的读写
object ParquetFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() ...
- SparkSQL读写外部数据源--数据分区
import com.twq.dataset.Utils._ import org.apache.spark.sql.{SaveMode, SparkSession} object FileParti ...
- SparkSQL读写外部数据源-通过jdbc读写mysql数据库
object JdbcDatasourceTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builde ...
- load、save方法、spark sql的几种数据源
load.save方法的用法 DataFrame usersDF = sqlContext.read().load("hdfs://spark1:9000/users.pa ...
- 37、数据源之通用的load和save操作
一.通用的load和save操作 1.概述 对于Spark SQL的DataFrame来说,无论是从什么数据源创建出来的DataFrame,都有一些共同的load和save操作. load操作主要用于 ...
- Update(Stage4):sparksql:第1节 SparkSQL_使用场景_优化器_Dataset & 第2节 SparkSQL读写_hive_mysql_案例
目标 SparkSQL 是什么 SparkSQL 如何使用 Table of Contents 1. SparkSQL 是什么 1.1. SparkSQL 的出现契机 1.2. SparkSQL 的适 ...
- 【转载】Spark SQL之External DataSource外部数据源
http://blog.csdn.net/oopsoom/article/details/42061077 一.Spark SQL External DataSource简介 随着Spark1.2的发 ...
随机推荐
- [转帖]技术人眼中的Facebook Libra
技术人眼中的Facebook Libra https://www.jianshu.com/p/ddc733077749 比特币 以太坊 EOS Libra 0.8352019.07.01 14:15: ...
- Google Colab——零成本玩转深度学习
前言 最近在学深度学习HyperLPR项目时,由于一直没有比较合适的设备训练深度学习的模型,所以在网上想找到提供模型训练,经过一段时间的搜索,最终发现了一个谷歌的产品--Google Colabora ...
- Linux 6 修改ssh默认远程端口号
linux 默认的ssh远程端口是22,有时默认端口会遭到别有用心的人们扫描或攻击,为了时我们的系统更加安全那就需要修改远程端口号 操作步骤:1.修改ssh_config配置文件 vim /etc/s ...
- [golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量
1 前言 svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量 2 代码 type Point struct { X float64 Y float64 } func GetOffsetX ...
- 易百教程人工智能python修正-人工智能NLTK性别发现器
在这个问题陈述中,将通过提供名字来训练分类器以找到性别(男性或女性). 我们需要使用启发式构造特征向量并训练分类器.这里使用scikit-learn软件包中的标签数据. 以下是构建性别查找器的Pyth ...
- js删除对象里的某一个属性
var a={"id":1,"name":"danlis"}; //添加属性 a.age=18; console.log(a); //结果: ...
- Android Studio 打包生成apk
打开AndroidStudio,并且打开想要生成apk文件的项目 点击工具栏上面的“Builder” 点击“Builder”之后在下拉菜单里面可以看到“Genarate Singed APK”,点 ...
- tomcat将控制台输出定向到特定的文件中,并且一天一个文件
在bin目录的start.bat中,编辑: call "%EXECUTABLE%" start %CMD_LINE_ARGS% 改成: call "%EXECUTABLE ...
- 计算地图上两点间的距离PHP类
计算地图上两点间的距离,使用的是谷歌地图 <?php class GeoHelper { /** * @param int $lat1 * @param int $lon1 * @param i ...
- MySQL DDL--gh-ost学习
gh-ost工作原理 1.首先新建一张ghost表,结构与源表相同 2.使用alter命令修改ghost表 3.1.模拟从库命令获取主库上该表的binlog(基于全镜像的行模式的binlog包含更改前 ...