Spark DataFrame 的生成

json 文件如下:
在这里插入图片描述

一.读取json文件加载DataFrame

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession

class dataframetest {

}
object dataframetest{
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName( "Spark SQL DataFrame Operations").setMaster( "local" )
    val sparkContext = new SparkContext(sparkConf)
    val sqlContext = SparkSession.builder().appName("MysqlQueryDemo").master("local").getOrCreate()
    val dataFrame = sqlContext.read.json("/disk4/workspaceidea/examplespark/people.json")
    dataFrame.show()
  }
}

结果如下:
在这里插入图片描述

二.写sql来加载DataFrame

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession

class dataframetest {

}
object dataframetest{
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName( "Spark SQL DataFrame Operations").setMaster( "local" )
    val sparkContext = new SparkContext(sparkConf)
    val sqlContext = SparkSession.builder().appName("MysqlQueryDemo").master("local").getOrCreate()
    val dataFrame1 = sqlContext.read.json("/disk4/workspaceidea/examplespark/people.json")
    // 将DataFrame注册成临时表
    dataFrame1.registerTempTable("t1")
    val dataFrame2 = sqlContext.sql("select csid,manufacturer,bid,brand from t1 where bid>2")
    dataFrame2.show()
  }
}

结果如下:
在这里插入图片描述
一二区别:用 sqlContext 读取 json 文件加载 DataFrameDataFrame 会按照 ASCII码 排序。

三.读取json格式的RDD加载DataFrame

两者可以互相转换。

  • DataFrame 转成 RDD
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession

class dataframetest {

}
object dataframetest{
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName( "Spark SQL DataFrame Operations").setMaster( "local" )
    val sparkContext = new SparkContext(sparkConf)
    val sqlContext = SparkSession.builder().appName("MysqlQueryDemo").master("local").getOrCreate()
    val dataFrame1 = sqlContext.read.json("/disk4/workspaceidea/examplespark/people.json")
    val rdd = dataFrame1.rdd
    rdd.take(3).foreach(println)
  }
}

结果如下:
在这里插入图片描述

  • RDD 转成 DataFrame
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession

class dataframetest {

}
object dataframetest{
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName( "Spark SQL DataFrame Operations").setMaster( "local" )
    val sparkContext = new SparkContext(sparkConf)
    val sqlContext = SparkSession.builder().appName("MysqlQueryDemo").master("local").getOrCreate()
    val RDD = sparkContext.parallelize(Array("{\"name\":\"zhangsan\",\"age\":18}",
      "{\"name\":\"lisi\",\"age\":19}",
      "{\"name\":\"wangwu\",\"age\":20}"))
    val dataFrame = sqlContext.read.json(RDD)
    dataFrame.show()
    //dataFrame.select("age").show(2)
  }
}

结果如下:
在这里插入图片描述

先写这些

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值