使用idea,Spark读取json

使用idea,Spark读取json

普通读取

import org.apache.spark.sql.SparkSession
object r11_26_2 {
  def main(args:Array[String]):Unit= {
    val session =new SparkSession.Builder().appName("").master("local").getOrCreate()
    val df = session.read.json("./out")
    df.show()
  }
}

读取嵌套的会不适用

读取嵌套

/**
  * 格式:
  *   {"name":"zhangsan","score":100,"infos":{"age":20,"gender":'man'}}
  */
import org.apache.spark.sql.{SQLContext, SparkSession}
object r11_26_2 {
  def main(args:Array[String]):Unit= {
    val session =new SparkSession.Builder().appName("").master("local").getOrCreate()
    val df = session.read.json("./out")
    df.printSchema()
    df.createOrReplaceTempView("dfs")
    session.sql("select name,city_name,comment.cmt_room_type from dfs").show(100)
  }
}

读取数组文件会失败,其他的可以读、
建立临时表->查询

读取嵌套

/**
  * 读取嵌套的jsonArray数组,格式如下:
  * {"name":"lisi","age":19,"scores":[{"yuwen":58,"shuxue":50,"yingyu":78},{"dili":56,"shengwu":76,"huaxue":13}]}
  *
  *explode函数作用:将数组展开,数组中的每个json都是一条数据
  */
import org.apache.spark.sql.{SQLContext, SparkSession}
object r11_26_2 {
  def main(args:Array[String]):Unit= {
    val session =new SparkSession.Builder().appName("").master("local[*]").getOrCreate()
    val df = session.read.json("./jdn.json")
    import org.apache.spark.sql.functions._
    import session.implicits._
    val transDF = df.select($"phone_name",$"comments.buy_color",explode($"parameter")).toDF("phone_name","buy_color","parameter")
    val transDF1 = transDF.select("phone_name","buy_color","parameter.CPU品牌")
    transDF1.show(100)
    transDF.printSchema()
  }
}

这个数组不能用于键相同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值