sparkSQL多数据源操作
时间: 2023-11-07 10:52:48 浏览: 174
Spark SQL支持多种数据源,包括Hive、JSON、CSV、Parquet、JDBC等。在使用多个数据源时,可以使用Spark SQL提供的API来实现数据的读取、转换和写入。下面是一个使用多个数据源的示例代码:
```scala
import org.apache.spark.sql.SparkSession
object MultiDataSourceExample {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("MultiDataSourceExample")
.master("local[*]")
.getOrCreate()
// 从Hive表读取数据
val df1 = spark.sql("SELECT * FROM hive_table")
// 从JSON文件读取数据
val df2 = spark.read.json("path/to/json/file")
// 从CSV文件读取数据
val df3 = spark.read.csv("path/to/csv/file")
// 从Parquet文件读取数据
val df4 = spark.read.parquet("path/to/parquet/file")
// 从JDBC数据源读取数据
val df5 = spark.read.format("jdbc")
.option("url", "jdbc:mysql://localhost:3306/test")
.option("dbtable", "table_name")
.option("user", "root")
.option("password", "password")
.load()
// 对数据进行转换和处理
val result = df1.union(df2).join(df3, Seq("id")).filter("age > 18").groupBy("gender").count()
// 将结果写入到Hive表中
result.write.saveAsTable("hive_table_result")
// 将结果写入到JSON文件中
result.write.json("path/to/json/file/result")
// 将结果写入到CSV文件中
result.write.csv("path/to/csv/file/result")
// 将结果写入到Parquet文件中
result.write.parquet("path/to/parquet/file/result")
// 将结果写入到JDBC数据源中
result.write.format("jdbc")
.option("url", "jdbc:mysql://localhost:3306/test")
.option("dbtable", "result_table")
.option("user", "root")
.option("password", "password")
.mode("overwrite")
.save()
spark.stop()
}
}
```
在上面的示例代码中,我们使用了Hive表、JSON文件、CSV文件、Parquet文件和JDBC数据源。首先,我们从不同的数据源中读取数据,并对数据进行转换和处理。然后,我们将处理后的结果写入到不同的数据源中。需要注意的是,写入到JDBC数据源时,需要指定JDBC连接信息和写入模式。
阅读全文