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),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
在测试阶段,可以执行一个触发聚合计算的Hive SQL查询,例如`SELECT COUNT(*) FROM table`。如果集成正常,日志输出应该符合预期。 参考文档包括Apache官方的Hive on Spark指南、Spark运行在YARN上的文档,以及相关...
### Spark SQL 学习笔记知识点总结 #### 一、Spark SQL 概述 - **定义**:Spark SQL 是 Apache Spark 的一个模块,用于处理结构化数据。它提供了 DataFrame 和 Dataset API,以及支持 SQL 查询的能力。这些特性...
Hive是Apache软件基金会下的一个开源项目,它提供了一种基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL(HQL,Hive Query Language)查询功能,使得用户能够通过SQL语句对海量数据...
Spark SQL可以直接读取Hive Metastore中的表,使得Hive用户可以无缝过渡到Spark,享受Spark的高性能查询能力。 10. Spark Streaming与Kafka集成: Spark Streaming可以与Kafka等消息队列系统集成,实现实时数据流...
以上知识点是"Spark笔记"中可能涵盖的内容,Hive.docx可能详细介绍了如何使用Hive进行数据建模、查询优化以及与Spark的交互。通过深入学习这些内容,你可以更好地理解和运用这两个强大的大数据工具。
本资料集是大数据课程笔记的一部分,涵盖了从Hadoop基础知识到Spark SQL的全面应用,旨在帮助学习者深入理解大数据处理流程。 首先,我们要了解Hadoop的基础,它是大数据处理的基石。Hadoop是一个开源框架,主要...
Hive 是一个基于 Hadoop 的数据仓库工具,它允许用户使用类似 SQL 的查询语言(HQL)来处理存储在 Hadoop 分布式文件系统(HDFS)上的大规模数据集。Hive 提供了数据汇总、分析和查询功能,非常适合批处理分析任务。...
本学习笔记集中介绍了Spark SQL在spark-shell中的操作方法,以及如何使用Spark进行数据清洗和转换成DataFrame的操作。 首先,Spark SQL是Spark用于处理结构化数据的一个组件,它提供了SQL接口,可以执行SQL查询。...
Spark SQL学习笔记 Spark SQL是Apache Spark平台下的一个模块,提供了一个编程抽象叫做DataFrame,并且作为分布式SQL查询引擎的作用。Spark SQL是Spark平台下的一个重要组件,主要用于处理结构化数据。 Spark SQL...
【Hive学习笔记精华版】 Hive是大数据处理领域中的一款重要工具,它基于Hadoop构建,主要用于数据仓库和数据分析。作为一个离线处理系统,Hive可以将结构化的数据文件映射成数据库表,允许用户使用类似SQL的查询...
在大数据处理领域,Hive是一个不可或缺的重要工具,它为海量数据提供了基于SQL的查询和分析能力,使得非技术人员也能轻松处理大数据问题。本笔记将深入探讨Hive的核心概念、架构、操作以及在实际应用中的最佳实践。 ...
Hive的设计目标是将SQL的易用性与Hadoop的可扩展性和容错性相结合,为大数据分析提供了一个高效且灵活的平台。 二、Hive架构 Hive的架构主要包括四个组件:客户端、元数据存储、HiveServer和Hadoop集群。客户端是...
1. **Hive架构**:Hive由多个组件组成,包括Hive Server、Hcatalog、Hive Metastore、HQL(Hive Query Language)等。Hive Server负责接收和执行客户端的查询请求,Hcatalog用于共享元数据,Hive Metastore存储表和...
Spark SQL结合了DataFrame,提供了一种更接近SQL的方式来处理数据。MLlib是Spark的机器学习库,包含多种算法。GraphX则用于图数据处理,而Spark Streaming则处理实时流数据。 Runs Everywhere(跨平台性)让Spark...
Hive的优势在于它能够将SQL查询转换为一系列的MapReduce任务,简化了大数据分析的过程。Hive的元数据通常存储在MySQL等传统关系型数据库中,用于管理表的结构和位置信息。 Hive01.pdf和Hive高级.pdf可能涵盖了Hive...
2. Spark SQL:用于处理结构化数据,支持SQL查询,可以与Hive等数据库集成。 3. Spark Streaming:处理实时流数据,通过微批处理实现高吞吐量。 4. MLlib:机器学习库,提供了多种算法和工具。 5. GraphX:图计算...
Spark SQL是Spark用于结构化数据处理的模块,它将SQL查询与DataFrame和Dataset API相结合,提供了一种统一的方式来处理各种数据源,包括HDFS、Cassandra、Hive、 JDBC/ODBC 数据库等。DataFrame是Spark SQL中的核心...
Hive是Apache Hadoop生态系统中的一个组件,主要设计用于处理和管理大规模的结构化数据。它的出现使得非程序员,如业务分析师,能够通过SQL-like的语言(HQL)对大数据进行查询和分析,极大地简化了大数据处理的复杂...
【Hive学习笔记】 Hive是大数据处理领域中的一个重要组件,它是基于...然而,由于其设计目标和特性,Hive不适合处理高并发的实时查询和强一致性的事务处理,这些场景可能需要其他更合适的工具,如Impala或Spark SQL。