版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
https://blog.csdn.net/xiaoduan_/article/details/80840686
Spark中的Data Sources (数据源)
Spark SQL 支持通过 DataFrame 接口对各种 data sources (数据源)进行操作. DataFrame 可以使用 relational transformations (关系转换)操作, 也可用于创建 temporary view (临时视图). 将 DataFrame 注册为 temporary view (临时视图)允许您对其数据运行 SQL 查询. 本节 描述了使用 Spark Data Sources 加载和保存数据的一般方法, 然后涉及可用于 built-in data sources (内置数据源)的 specific options (特定选项).
Generic Load/Save Functions (通用 加载/保存 功能)
在最简单的形式中, 默认数据源(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")
Manually Specifying Options (手动指定选项)
您还可以 manually specify (手动指定)将与任何你想传递给 data source 的其他选项一起使用的 data source . Data sources 由其 fully qualified name (完全限定名称)(即 org.apache.spark.sql.parquet ), 但是对于 built-in sources (内置的源), 你也可以使用它们的 shortnames (短名称)(json, parquet, jdbc, orc, libsvm, csv, text).从任何 data source type (数据源类型)加载 DataFrames 可以使用此 syntax (语法)转换为其他类型
val peopleDF = spark.read.format("json").load("examples/src/main/resources/people.json")
peopleDF.select("name", "age").write.format("parquet").save("namesAndAges.parquet")
Run SQL on files directly (直接在文件上运行 SQL)
不使用读取 API 将文件加载到 DataFrame 并进行查询, 也可以直接用 SQL 查询该文件.
val sqlDF = spark.sql("SELECT * FROM parquet.`examples/src/main/resources/users.parquet`")
Save Modes (保存模式)
Save operations (保存操作)可以选择使用 SaveMode , 它指定如何处理现有数据如果存在的话. 重要的是要意识到, 这些 save modes (保存模式)不使用任何 locking (锁定)并且不是 atomic (原子). 另外, 当执行 Overwrite 时, 数据将在新数据写出之前被删除.
Scala/Java | Any Language | Meaning |
---|---|---|
SaveMode.ErrorIfExists (default) | “error” (default) | 将 DataFrame 保存到 data source (数据源)时, 如果数据已经存在, 则会抛出异常. |
SaveMode.Append | “append” | 将 DataFrame 保存到 data source (数据源)时, 如果 data/table 已存在, 则 DataFrame 的内容将被 append (附加)到现有数据中. |
SaveMode.Overwrite | “overwrite” | Overwrite mode (覆盖模式)意味着将 DataFrame 保存到 data source (数据源)时, 如果 data/table 已经存在, 则预期 DataFrame 的内容将 overwritten (覆盖)现有数据. |
SaveMode.Ignore | “ignore” | Ignore mode (忽略模式)意味着当将 DataFrame 保存到 data source (数据源)时, 如果数据已经存在, 则保存操作预期不会保存 DataFrame 的内容, 并且不更改现有数据. 这与 SQL 中的 CREATE TABLE IF NOT EXISTS 类似. |