数据源-基本操作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的更多相关文章

  1. SparkSQL读写外部数据源--csv文件的读写

    object CSVFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .ap ...

  2. SparkSQL读写外部数据源-json文件的读写

    object JsonFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .m ...

  3. SparkSQL读写外部数据源-jext文件和table数据源的读写

    object ParquetFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() ...

  4. SparkSQL读写外部数据源--数据分区

    import com.twq.dataset.Utils._ import org.apache.spark.sql.{SaveMode, SparkSession} object FileParti ...

  5. SparkSQL读写外部数据源-通过jdbc读写mysql数据库

    object JdbcDatasourceTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builde ...

  6. load、save方法、spark sql的几种数据源

    load.save方法的用法          DataFrame usersDF = sqlContext.read().load("hdfs://spark1:9000/users.pa ...

  7. 37、数据源之通用的load和save操作

    一.通用的load和save操作 1.概述 对于Spark SQL的DataFrame来说,无论是从什么数据源创建出来的DataFrame,都有一些共同的load和save操作. load操作主要用于 ...

  8. Update(Stage4):sparksql:第1节 SparkSQL_使用场景_优化器_Dataset & 第2节 SparkSQL读写_hive_mysql_案例

    目标 SparkSQL 是什么 SparkSQL 如何使用 Table of Contents 1. SparkSQL 是什么 1.1. SparkSQL 的出现契机 1.2. SparkSQL 的适 ...

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

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

随机推荐

  1. 前端与算法 leetcode 27.移除元素

    目录 # 前端与算法 leetcode 27.移除元素 题目描述 概要 提示 解析 算法 @(目录) # 前端与算法 leetcode 27.移除元素 题目描述 27.移除元素 概要 题目本身其实挺简 ...

  2. [Linux] 树莓派 4B 安装 Ubuntu 19.10 (Eoan Ermine) IOT 版

    硬件:Raspberry Pi 4B系统:Ubuntu 19.10 (Eoan Ermine) for IOT官网:https://ubuntu.com/download/iot/raspberry- ...

  3. Linux下signal信号汇总

    SIGHUP /* Hangup (POSIX). */ 终止进程 终端线路挂断 SIGINT /* Interrupt (ANSI). */ 终止进程 中断进程 Ctrl+C SIGQUIT /* ...

  4. me.chanjar.weixin.common.error.WxErrorException: {"errcode":40013,"errmsg":"invalid appid hint: [xxxxxxxxxx]"}

    错误解决思路: 1.看看appid和appsecret的配置信息是否正确 2.查看前后端通信的http或者https协议是否正确( http://xxxxxxx 写成https://xxxxxxx)

  5. 2. 运行Spark Streaming

    2.1 IDEA编写程序 Pom.xml加入以下依赖: <dependency> <groupId>org.apache.spark</groupId> <a ...

  6. python之Ai测试Applitools使用

    一:Appltools下载: pip install eyes-selenium==3.16.2 二:注册:Appltools账号:https://applitools.com/sign-up 三.获 ...

  7. Jenkins基于https的k8s配置

    一.摘要 jenkins 连接低版本的k8s时,不需要验证.但是新版本的启用了https和角色管理 二.安装kubernetes插件 登录jenkins,点击 Manage Jenkins --> ...

  8. Spring-Cloud之Spring-Boot框架-1

    一.Spring Boot 是由 Pivotal 团队开发的 Spring 框架,采用了生产就绪的观点 ,旨在简化配置,致力于快速开发. Spring Boot 框架提供了自动装配和起步依赖,使开发人 ...

  9. Django后台管理admin或者adminx中使用富文本编辑器

    在admin或者adminx后台中使用富文本编辑器 一.建立模型:(安装django-tinymce==2.6.0) from django.db import models from tinymce ...

  10. PS利用蒙版抠图

    扣图除了用锁套工具外,用蒙版时一个比较快的方法. 前期准备 首先准备一个PS CS6和一个神仙姐姐,一定要先Ctrl+J复制一份图层(不然待会神仙姐姐就找不到了). 使用色阶及反相获取轮廓 使用色阶使 ...