数据源-基本操作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. dell服务器在bios中指定raid5的热备盘

    一.创建raid5 二.指定热备盘   选择第15块磁盘作为上面创建的raid5的热备盘 选中 选中我们刚创建的raid5,点击OK

  2. 接口和抽象类的区别,注意JDK8的接口可以有实现。

    Java中,抽象类和接口有相似的地方.下面我们就来细说说接口和抽象类的异同. 首先是相同的地方: 1. 接口和抽象类都能定义方法和属性. 2. 接口和抽象类都是看作是一种特殊的类.大部分的时候,定义的 ...

  3. spring框架是怎么样通过properties来获得对象的?

    首先我们要知道java获得对象的方式有四种: 1.通过new语句实例化一个对象. 2.通过反射机制创建对象. 3.通过clone()方法创建对象 3.通过反序列化的方式创建对象 在spring框架中, ...

  4. JQuery高级(二)

    3. 事件绑定 1. jquery标准的绑定方式 * jq对象.事件方法(回调函数): * 注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为. * 表单对象.submit();//让表单提 ...

  5. python学习-33 max和min函数的高级使用

    1.简单比较 age_dic={'age1456':15,'age2':16,'xiaohong_age':12,'xiaoming_age4':18,'age5':10} print(max(age ...

  6. 【LEETCODE】65、字符分类,medium&easy级别,题目:20、647、3

    今天的字符类还比较简单 package y2019.Algorithm.str.easy; import java.util.HashMap; import java.util.Map; import ...

  7. 《JAVA高并发编程详解》-Thread对象的启动

    当我们用关键字new创建一个Thread对象时,此时它并不处于执行状态,因为没有调用start方法启动该线程,那么线程的状态为NEW状态,NEW状态通过start方法进入RUNNABLE状态. 线程一 ...

  8. 2019 世纪龙java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.世纪龙等公司offer,岗位是Java后端开发,因为发展原因最终选择去了世纪龙,入职一年时间了,也成为了面试官 ...

  9. kali之DVWA

    简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境, ...

  10. 【开发笔记】- 永远不要在MySQL中使用UTF-8

    原文地址:https://mp.weixin.qq.com/s/I3Tkvn8vSyC5lEpD9HzwiA 最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个 ...