11.1 通用加载和保存函数

默认数据源是parquet, 我们也可以通过使用:spark.sql.sources.default这个属性来设置默认的数据源.

val usersDF = spark.read.load("examples/src/main/resources/users.parquet")
usersDF.select("name", "favorite_color").write.save("namesAndFavColors.parquet")

说明:

  • spark.read.load 是加载数据的通用方法.

  • df.write.save 是保存数据的通用方法.


手动指定选项

也可以手动给数据源指定一些额外的选项. 数据源应该用全名称来指定, 但是对一些内置的数据源也可以使用短名称:json, parquet, jdbc, orc, libsvm, csv, text

al peopleDF = spark.read.format("json").load("examples/src/main/resources/people.json")
peopleDF.select("name", "age").write.format("parquet").save("namesAndAges.parquet")

在文件上直接运行 SQL

我们前面都是使用read API 先把文件加载到 DataFrame, 然后再查询. 其实, 我们也可以直接在文件上进行查询

scala> spark.sql("select * from json.`examples/src/main/resources/people.json`")

说明:

  • json表示文件的格式. 后面的文件具体路径需要用反引号括起来.

文件保存选项(SaveMode)

保存操作可以使用 SaveMode, 用来指明如何处理数据. 使用mode()方法来设置.

有一点很重要: 这些 SaveMode 都是没有加锁的, 也不是原子操作. 还有, 如果你执行的是 Overwrite 操作, 在写入新的数据之前会先删除旧的数据.

Scala/Java Any Language Meaning
SaveMode.ErrorIfExists(default) "error"(default) 如果文件已经存在则抛出异常
SaveMode.Append "append" 如果文件已经存在则追加
SaveMode.Overwrite "overwrite" 如果文件已经存在则覆盖
SaveMode.Ignore "ignore" 如果文件已经存在则忽略

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-08-09 00:21:43

results matching ""

    No results matching ""