`
qindongliang1922
  • 浏览: 2183768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117530
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59896
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

spark sql on hive笔记一

阅读更多
Spark sql on Hive非常方便,通过共享读取hive的元数据,我们可以直接使用spark sql访问hive的库和表,做更快的OLAP的分析。

spark 如果想直接能集成sql,最好自己编译下源码:

切换scala的版本为新版本
dev/change-scala-version.sh 2.11

编译支持hive
mvn -Pyarn -Phive  -Phive-thriftserver -Phadoop-2.7.3 -Dscala-2.11 -DskipTests clean package

注意,spark sql 可以直接在Linux上使用,像执行hive命令一样,进入交互式终端,进行即席查询,进入spark-sql交互式终端命令,并指定以yarn的模式运行:

spark/bin/spark-sql  --master yarn
本次使用的spark2.0.2,进入交互式终端之后,可以进行任意的查询分析,但本文的笔记例子,不是基于终端的spark sql分析,而是在Scala中使用spark sql on hive,在编程语言里面使用spark sql on hive 灵活性大大提供,能做更多的事情,比如说分析完的结果存储到MySQL,Hbase或者Redis里面,或者分析的过程,需要外部存储的一些数据等等。

开发程序是在IDEA里面写的,项目风格是Java+scala混搭采用maven管理,注意不是全scala项目,没有用sbt管理,sbt的国内下载非常慢,能翻网的同学可以尝试一下。

功能: 使用spark sql读取hive的数据,然后根据某个字段分组,并收集分组结果,然后存储到redis里面。

def main(args: Array[String]): Unit = {
    
    val t0=System.nanoTime();//开始时间
    val spark=SparkSession
       .builder()
        .appName("spark on sql hive  ")
       .enableHiveSupport().getOrCreate();//激活hive支持

    
    import spark.implicits._
    import spark.sql
    sql(" use db")//切换db
    //注意,collect_set 可以收集分组结果
    val ds=sql("select q_id, collect_set(kp_id) as ids from ods_q_quest_kp_rel where kp_id!=0  group by q_id");
    ds.cache();//cache起来,便于后续使用
    println("size:",ds.collect().length)//打印长度
    ds.select("q_id","ids").collect().foreach (
      t =>
      {
        val key=t.getAs[String]("q_id");//获取上面的列映射
        val value=t.getAs[Seq[String]]("ids").mkString(",");//获取上面的分组集合
        //insert redis
      }
    )
    val t1=System.nanoTime();
    
    println("insert redis ok! Elapsed time: " + (t1 - t0)/1000/1000 + "ms")
    //停止
    spark.stop();

  }


 
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

0
0
分享到:
评论

相关推荐

    Hive on Spark实施笔记1

    在测试阶段,可以执行一个触发聚合计算的Hive SQL查询,例如`SELECT COUNT(*) FROM table`。如果集成正常,日志输出应该符合预期。 参考文档包括Apache官方的Hive on Spark指南、Spark运行在YARN上的文档,以及相关...

    Spark SQL学习笔记

    ### Spark SQL 学习笔记知识点总结 #### 一、Spark SQL 概述 - **定义**:Spark SQL 是 Apache Spark 的一个模块,用于处理结构化数据。它提供了 DataFrame 和 Dataset API,以及支持 SQL 查询的能力。这些特性...

    大数据hive笔记.zip

    Hive是Apache软件基金会下的一个开源项目,它提供了一种基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL(HQL,Hive Query Language)查询功能,使得用户能够通过SQL语句对海量数据...

    spark笔记整理文档

    Spark SQL可以直接读取Hive Metastore中的表,使得Hive用户可以无缝过渡到Spark,享受Spark的高性能查询能力。 10. Spark Streaming与Kafka集成: Spark Streaming可以与Kafka等消息队列系统集成,实现实时数据流...

    spark笔记.zip

    以上知识点是"Spark笔记"中可能涵盖的内容,Hive.docx可能详细介绍了如何使用Hive进行数据建模、查询优化以及与Spark的交互。通过深入学习这些内容,你可以更好地理解和运用这两个强大的大数据工具。

    Spark SQL.xmind.zip

    本资料集是大数据课程笔记的一部分,涵盖了从Hadoop基础知识到Spark SQL的全面应用,旨在帮助学习者深入理解大数据处理流程。 首先,我们要了解Hadoop的基础,它是大数据处理的基石。Hadoop是一个开源框架,主要...

    Hive操作笔记(呕心沥血制作)

    Hive 是一个基于 Hadoop 的数据仓库工具,它允许用户使用类似 SQL 的查询语言(HQL)来处理存储在 Hadoop 分布式文件系统(HDFS)上的大规模数据集。Hive 提供了数据汇总、分析和查询功能,非常适合批处理分析任务。...

    spark学习笔记

    本学习笔记集中介绍了Spark SQL在spark-shell中的操作方法,以及如何使用Spark进行数据清洗和转换成DataFrame的操作。 首先,Spark SQL是Spark用于处理结构化数据的一个组件,它提供了SQL接口,可以执行SQL查询。...

    Spark学习笔记之Spark SQL的具体使用

    Spark SQL学习笔记 Spark SQL是Apache Spark平台下的一个模块,提供了一个编程抽象叫做DataFrame,并且作为分布式SQL查询引擎的作用。Spark SQL是Spark平台下的一个重要组件,主要用于处理结构化数据。 Spark SQL...

    hive学习笔记精华版

    【Hive学习笔记精华版】 Hive是大数据处理领域中的一款重要工具,它基于Hadoop构建,主要用于数据仓库和数据分析。作为一个离线处理系统,Hive可以将结构化的数据文件映射成数据库表,允许用户使用类似SQL的查询...

    Hive.笔记.zip

    在大数据处理领域,Hive是一个不可或缺的重要工具,它为海量数据提供了基于SQL的查询和分析能力,使得非技术人员也能轻松处理大数据问题。本笔记将深入探讨Hive的核心概念、架构、操作以及在实际应用中的最佳实践。 ...

    大数据技术学习笔记之Hive.zip

    Hive的设计目标是将SQL的易用性与Hadoop的可扩展性和容错性相结合,为大数据分析提供了一个高效且灵活的平台。 二、Hive架构 Hive的架构主要包括四个组件:客户端、元数据存储、HiveServer和Hadoop集群。客户端是...

    Hive大数据仓库-笔记整理 (一)2020年最新版.pdf

    1. **Hive架构**:Hive由多个组件组成,包括Hive Server、Hcatalog、Hive Metastore、HQL(Hive Query Language)等。Hive Server负责接收和执行客户端的查询请求,Hcatalog用于共享元数据,Hive Metastore存储表和...

    Spark学习笔记一

    Spark SQL结合了DataFrame,提供了一种更接近SQL的方式来处理数据。MLlib是Spark的机器学习库,包含多种算法。GraphX则用于图数据处理,而Spark Streaming则处理实时流数据。 Runs Everywhere(跨平台性)让Spark...

    分布式数据库Hive笔记_HDFS_Hadoop_分布式数据库

    Hive的优势在于它能够将SQL查询转换为一系列的MapReduce任务,简化了大数据分析的过程。Hive的元数据通常存储在MySQL等传统关系型数据库中,用于管理表的结构和位置信息。 Hive01.pdf和Hive高级.pdf可能涵盖了Hive...

    spark资料笔记代码

    2. Spark SQL:用于处理结构化数据,支持SQL查询,可以与Hive等数据库集成。 3. Spark Streaming:处理实时流数据,通过微批处理实现高吞吐量。 4. MLlib:机器学习库,提供了多种算法和工具。 5. GraphX:图计算...

    spark学习文档.rar

    Spark SQL是Spark用于结构化数据处理的模块,它将SQL查询与DataFrame和Dataset API相结合,提供了一种统一的方式来处理各种数据源,包括HDFS、Cassandra、Hive、 JDBC/ODBC 数据库等。DataFrame是Spark SQL中的核心...

    hive学习笔记

    Hive是Apache Hadoop生态系统中的一个组件,主要设计用于处理和管理大规模的结构化数据。它的出现使得非程序员,如业务分析师,能够通过SQL-like的语言(HQL)对大数据进行查询和分析,极大地简化了大数据处理的复杂...

    Hive学习笔记

    【Hive学习笔记】 Hive是大数据处理领域中的一个重要组件,它是基于...然而,由于其设计目标和特性,Hive不适合处理高并发的实时查询和强一致性的事务处理,这些场景可能需要其他更合适的工具,如Impala或Spark SQL。

Global site tag (gtag.js) - Google Analytics