首页 > 其他分享 >Spark整合hive

Spark整合hive

时间:2022-10-28 19:26:27浏览次数:34  
标签:tt1 hive id score 整合 sql spark Spark

Spark-SQL 写代码方式

  • 1、在IDEA中将代码编写好打包上传到集群中运行(上线使用)

    使用spark-submit提交

  • 2、spark-shell (repl) 里面使用sqlContext 测试使用,简单任务使用

    spark-shell --master yarn-client

    不能使用yarn-cluster

  •  

     

  • 3、spark-sql

    spark-sql --master yarn-client

    不能使用yarn-cluster

  • 4、整合hive 使用hive的元数据

    • 在hive的hive-site.xml修改一行配置

      在使用之前都需要先启动元数据服务

      <property>
      <name>hive.metastore.uris</name>
      <value>thrift://master:9083</value>
      </property>
    • 将hive-site.xml 复制到spark conf目录下

      cp /usr/local/soft/hive-1.2.1/conf/hive-site.xml /usr/local/soft/spark-2.4.5/conf/

    • 启动hive元数据服务

      hive --service metastore(推荐 更方便查看日志)

      nohup hive --service metastore >> metastore.log 2>&1 &

    • 将mysql 驱动包复制到spark jars目录下

      cp /usr/local/soft/hive-1.2.1/lib/mysql-connector-java-5.1.49.jar /usr/local/soft/spark-2.4.5/jars/

    • 整合好之后在spark-sql 里面就可以使用hive的表了

      不能使用yarn-cluster模式

      spark-sql --master yarn-client --conf spark.sql.shuffle.partitions=2

      • 在spark-sql中设置运行参数

        set spark.sql.shuffle.partitions=2;

    • 建表

      create table student(
      id string,
      name string,
      age int,
      gender string,
      clazz string
      )
      ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
      STORED AS textfile
      location '/data/spark/stu/input/';

      create external table score(
      student_id string,
      cource_id string,
      sco int
      )
      ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
      STORED AS textfile
      location '/data/spark/score/input/';
  • 在idea中实现需要将hive-site.xml拉进idea项目的resource中(使用sz hive-site.xml命令把文件拉到桌面,然后放进idea里)
  • 需要在idea中添加pom依赖
  •             <dependency>
                     <groupId>org.apache.spark</groupId>
                     <artifactId>spark-hive_2.11</artifactId>
                     <version>${spark.version}</version>
                 </dependency>        

     

    • 查询

      • 1、统计每个班级前三名

        select  tt1.id
              ,tt1.name
              ,tt1.clazz
              ,tt1.sum_score
              ,tt1.rn
        from (
          select t1.id
                  ,t1.name
                  ,t1.clazz
                  ,t2.sum_score
                  ,row_number() over(partition by t1.clazz order by t2.sum_score desc) as rn
          from student t1
          join (
              select student_id as id
                      ,sum(sco) as sum_score
              from score
              group by student_id
          ) t2 on t1.id = t2.id
        ) tt1 where tt1.rn <= 3;

标签:tt1,hive,id,score,整合,sql,spark,Spark
From: https://www.cnblogs.com/wqy1027/p/16837162.html

相关文章

  • SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动
      uni-app默认使用uni-ui全端兼容的、高性能UI框架,在我们开发过程中可以满足大部分的需求了,并且如果是为了兼容性,还是强烈建议使用uni-ui作为UI框架使用。  如果作为......
  • SpringBoot中整合Shiro+Mybatis+Thymeleaf框架实现用户登录以及权限的验证(超级详细过
    1、建立springboot项目目录结构2、项目的jar包依赖在pom文件中加入jar包依赖<dependencies><!--整合shirosubject:用户security......
  • knife4j 整合springboot
    1.添加依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId></dependency> 2.配置类packag......
  • Maven 依赖整合
    代码模板快速启动脚手架(仅供参考)GitHub代码地址通用的依赖<dependencies><!--通用四大件--><dependency><groupId>org.s......
  • Hive实战
    1.使用hive实现WordCount(1) 创建数据库createdatabasewordcount;(2) 创建外部表createexternaltableword_data(linestring)rowformatdelimitedfieldst......
  • Hive调优
    1.Fetch抓取Fetch抓取是指Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT*FROMemployees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文......
  • Spark SQL概述、函数用法
    SparkSQL  底层还是基于RDD的,常用的语言DSL底层架构    在idea中的操作引入pom依赖<dependency><groupId>org.apache.spark</gr......
  • SparkSQL(二)
    【理解】SparkSQL执行流程接收到查询,既可以是SQL语句,也可以是DSL语法,以一个SQL语句为例:1、Parser,第三方类库Antlr实现。将sql字符串切分成Token,根据语义规则......
  • SparkCore(四)
    【理解】Spark内核原理RDD依赖RDD的5大特性中,第三个是【与父RDD的依赖关系】依赖关系可以按照是否有shuffle进一步分类窄依赖:【没有】shuffle,父RDD的一个分......
  • SparkSQL
    DataFrame创建DataFrame1.转换为DataFrame方式1将RDD[元组或列表]转换为DataFrame定义RDD,每个元素是Row类型将上面的RDD[Row]转换成DataFrame,df=spark.createDat......