SparkSQL的Json数据源

本文介绍使用SparkSQL读取JSON格式数据的方法,包括代码示例及如何处理JSON数据源的Schema信息变化。当JSON文件中添加新的属性值时,需要删除检验和文件并重新运行以确保数据正确读取。

SparkSql可以读取Json类型的文件

代码示例:

package cn.ysjh0014.SparkSql

import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}

object SparkSqlJson {

  def main(args: Array[String]): Unit = {

    val session: SparkSession = SparkSession.builder().appName("JsonSource").master("local[4]").getOrCreate()

    import session.implicits._
    //读取json类型的数据
    val json: DataFrame = session.read.json("D:\\test")

    val result: Dataset[Row] = json.where($"age"<=15)

    result.show()

    session.stop()
  }
}

运行结果:

可以看出,读取Json类型的数据可以读取到Schema信息,是将Json数据中的属性值转化成的,但是当你在Json文件中的某一列中添加一个新的属性值时,就不能读取成功,会报错,这是因为Json数据与检验和不一致,将文件目录中的Json检验和文件删除,重新运行,就可以重新读取到该数据,并且新添加的属性值也会显示出来,Json数据源的Schema信息只能显示出少数的几种数据类型

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连接信息和写入模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值