《SparkSql使用教程》--- 大数据系列

一、SQLContext、HiveContext、SparkSession

  • SQLContext:是spark sql的一个分支入口,可以用来操作sql,这个主要是针对spark来说
  • HiveContext:是spark sql中另外分支,用来操作hive。
  • SparkSession:Spark2.0中引入了SparkSession的概念,它为用户提供了一个统一的切入点来使用Spark的各项功能,用户不但可以使用DataFrame和Dataset的各种API
DataFrame和Dataset
  • DataFrame:
    在Spark中,DataFrame是一种以RDD为基础的分布式数据据集,类似于传统数据库听二维表格,DataFrame带有Schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。
    类似这样的
    root
    |-- age: long (nullable = true)
    |-- id: long (nullable = true)
    |-- name: string (nullable = true)
  • Dataset:
    Dataset是特定域对象中的强类型集合,它可以使用函数或者相关操作并行地进行转换等操作。每个Dataset都有一个称为DataFrame的非类型化的视图,这个视图是行的数据集。上面的定义看起来和RDD的定义类似,RDD的定义如下:
    RDD也是可以并行化的操作,DataSet和RDD主要的区别是:DataSet是特定域的对象集合;然而RDD是任何对象的集合。DataSet的API总是强类型的;而且可以利用这些模式进行优化,然而RDD却不行。
    Dataset的定义中还提到了DataFrame,DataFrame是特殊的Dataset,它在编译时不会对模式进行检测。在未来版本的Spark,Dataset将会替代RDD成为我们开发编程使用的API(注意,RDD并不是会被取消,而是会作为底层的API提供给用户使用)。

DataFrame和Dataset的区别官网地址

以下基于spark2.3.1

二、SQLContext的使用

1、建一个Scala应用程序
/**
  * SQLContext的使用
  *
  */
object SQLContextApp {

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

    //1)创建相应的context
    val sqlConf = new SparkConf()
    //生成环境中,通过命令来指定比较好一点
//    sqlConf.setAppName("SQLContextApp").setMaster("local[2]")
    val sc = new SparkContext(sqlConf)
    val sqlContext = new SQLContext(sc)

//    2)相关处理:json
   val people = sqlContext.read.format("json").load(path)
    people.printSchema()
    people.show()

//    3)关闭资源
    sc.stop()
  }

}
2、编写执行的文件 SQLContextApp.sh文件
vi SQLContextApp.sh 添加下面的shell
spark-submit \
 --name SQLContextApp
  --class com.zero.spark.SQLContextApp \
  --master local[2] \
  /root/lib/sqlspark-1.0.jar \
  /root/app/spark-2.3.0/examples/src/main/resources/people.json

三、HiveContext的使用

1、首先要添加相应的依赖
        
          org.apache.spark
          spark-hive_2.11
          ${spark.version}
        
2、建一个Scala应用程序
/**
  * hiveContext的使用
  */
object HiveContextApp {

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

    //1)创建相应的context
    val sqlConf = new SparkConf()
    //生成环境中,通过命令来指定比较好一点
    //    sqlConf.setAppName("SQLContextApp").setMaster("local[2]")
    val sc = new SparkContext(sqlConf)
    val hiveContext = new HiveContext(sc)

    //2)相关处理:json

    hiveContext.table("emp").show()

    //3)关闭资源
    sc.stop()
  }

}
3、编写执行的文件 HiveContextApp.sh文件
vi HiveContextApp.sh 添加下面的shell
spark-submit \
 --name SQLContextApp \
 --jars /root/software/mysql-connector-java-5.1.27.jar \
  --class com.zero.spark.HiveContextApp \
  --master local[2] \
  /root/lib/sqlspark-1.0.jar \

四、SparkSession的使用

1、建一个Scala应用程序
/**
  * SparkSession的使用
  */
object SparkSessionApp {

  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().appName("SparkSessionApp").master("local[2]").getOrCreate()

    val people = spark.read.format("json").load("D:/IDEAWORK/sparkdat/people.json")
//    val people = spark.read.json()
    people.show()
    spark.stop()
  }
}

特别注意

如果需要连接数据的话,需要添加 jdbc连接
添加依赖

      
          org.spark-project.hive
          hive-jdbc
          1.2.1.spark2
      

最后欢迎各位关注我的公众号

《SparkSql使用教程》--- 大数据系列_第1张图片
ZeroStroy

你可能感兴趣的:(《SparkSql使用教程》--- 大数据系列)