Spark Sql-写sql的方式(不重要)

Spark Sql

spark-sql 写代码方式

1、idea里面将代码编写好打包上传到集群中运行,上线使用

--conf spark.sql.shuffle.partitions=1 -- 设置spark sqlshuffle之后分区数据马,和代码里面设置是一样的,代码中优先级高
spark-submit提交
spark-submit --master yarn-client --class com.sql.Demo9Submit --conf spark.sql.shuffle.partitions=1 spark-1.0-SNAPSHOT.jar

代码如下
package com.sql
import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}

object Demo9Submit {

    def main(args: Array[String]): Unit = {
      val spark: SparkSession = SparkSession
        .builder()
        //提交到集群运行需要注释
        //      .master("local")
        .appName("submit")
        .getOrCreate()

      import spark.implicits._
      import org.apache.spark.sql.functions._

      //读取hdfs中的数据
      val studentDF: DataFrame = spark
        .read
        .format("csv")
        .option("sep", ",")
        .schema("id STRING,name STRING,age  INT,gender STRING,clazz STRING")
        .load("/spark/data/students")


      val genderNumDF: DataFrame = studentDF
        .groupBy($"gender")
        .agg(count($"gender") as "c")


      //保存数据到hdfs
      genderNumDF
        .write
        .format("csv")
        .option("sep", ",")
        .mode(SaveMode.Overwrite)
        .save("/spark/target/gender_num")
    }
}
运行结果如下

2、spark shell (repl) 里面使用sqlContext 测试使用,简单任务使用(边写代码边输出)这种属于硬写不方便

spark-shell --master yarn-client
不能使用yarn-cluster Driver必须再本地启动

3、spark-sql spark-sql --master yarn-client 不能使用yarn-cluster 和hive的命令行一样,直接写sql

开始时会打印一堆日志,如下:

我们可以在 关闭日志如下:

先改模板

修改日志级别

再次进入

在spark-sql时完全兼容hive sql的
spark-sql底层使用的时spark进行计算的
hive 底层使用的是MR进行计算的
posted @ 2022-07-17 18:51  a-tao必须奥利给  阅读(241)  评论(0)    收藏  举报