spark中可以通过spark sql 直接查询hive或impala中的数据,
一、启动方法
/data/spark-1.4.0-bin-cdh4/bin/spark-sql --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2
注:/data/spark-1.4.0-bin-cdh4/为spark的安装路径
/data/spark-1.4.0-bin-cdh4/bin/spark-sql –help 查看启动选项
--master MASTER_URL 指定master url
--executor-memory MEM 每个executor的内存,默认为1G
--total-executor-cores NUM 所有executor的总核数
-e <quoted-query-string> 直接执行查询SQL
-f <filename> 以文件方式批量执行SQL
二、Spark sql对hive支持的功能
1、查询语句:SELECT GROUP BY ORDER BY CLUSTER BY SORT BY
2、hive操作运算:
1) 关系运算:= ==, <>, <, >, >=, <=
2) 算术运算:+, -, *, /, %
3) 逻辑运算:AND, &&, OR, ||
4) 复杂的数据结构
5) 数学函数:(sign, ln, cos, etc)
6) 字符串函数:
3、 UDF
4、 UDAF
5、 用户定义的序列化格式
6、join操作:JOIN {LEFT|RIGHT|FULL} OUTER JOIN LEFT SEMI JOIN CROSS JOIN
7、 unions操作:
8、 子查询: SELECT col FROM ( SELECT a + b AS col from t1) t2
9、Sampling
10、 Explain
11、 分区表
12、 视图
13、 hive ddl功能:CREATE TABLE、CREATE TABLE AS SELECT、ALTER TABLE
14、 支持的数据类型:TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY TIMESTAMPDATE ARRAY MAP STRUCT
三、Spark sql 在客户端编程方式进行查询数据
1、启动spark-shell
./spark-shell --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2
2、编写程序
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.json("../examples/src/main/resources/people.json")
查看所有数据:df.show()
查看表结构:df.printSchema()
只看name列:df.select("name").show()
对数据运算:df.select(df("name"), df("age") + 1).show()
过滤数据:df.filter(df("age") > 21).show()
分组统计:df.groupBy("age").count().show()
1、查询txt数据
import sqlContext.implicits._
case class Person(name: String, age: Int)
val people = sc.textFile("../examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()
people.registerTempTable("people")
val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")
2、parquet文件
val df = sqlContext.read.load("../examples/src/main/resources/users.parquet")
3、hdfs文件
val df = sqlContext.read.load("hdfs://namenode.hadoop:9000/user/hive/warehouse/spark_test.db/test_parquet/part-r-00001.gz.parquet")
4、保存查询结果数据
val df = sqlContext.read.load("../examples/src/main/resources/users.parquet")
df.select("name", "favorite_color").write.save("namesAndFavColors.parquet“)
四、Spark sql性能调优
缓存数据表:sqlContext.cacheTable("tableName")
取消缓存表:sqlContext.uncacheTable("tableName")
spark.sql.inMemoryColumnarStorage.compressedtrue 当设置为true时,Spark SQL将为基于数据统计信息的每列自动选择一个压缩算法。
spark.sql.inMemoryColumnarStorage.batchSize 10000 柱状缓存的批数据大小。更大的批数据可以提高内存的利用率以及压缩效率,但有OOMs的风险
相关推荐
1. Spark SQL基础:介绍Spark SQL的基本概念和环境设置。 2. DataFrame和Dataset API:讲解DataFrame和Dataset的创建、操作及转换。 3. SQL支持:解释如何使用SQL语句进行查询,包括JOIN、GROUP BY、ORDER BY等操作...
本资料主要涵盖了Spark SQL的基础概念、核心特性、操作方法以及实战应用,旨在帮助读者全面理解和掌握Spark SQL的使用。 1. **Spark SQL简介** Spark SQL将Apache Spark的高性能计算能力与SQL查询语言相结合,允许...
Spark SQL的架构首先提供多种访问方式,包括使用HiveQL、Spark编程方式(SQL或DataFrame/Dataset API)、以及Streaming SQL方式来提交执行程序。提交后,Spark SQL会生成一个未完全解析的逻辑执行计划,接着利用内部...
书中通过实际案例,详细介绍了Spark SQL的各种特性和操作方法。 首先,书中的前言提到了Hadoop之父Doug Cutting的观点,认为MapReduce在大数据项目中的应用将被Apache Spark取代,这表明Spark SQL作为Spark的一部分...
此外,书中还会介绍如何利用Spark SQL进行复杂的数据分析和ETL(提取、转换、加载)任务。 《Hadoop权威指南(中文第3版)》是关于Hadoop的详尽参考资料,涵盖了从Hadoop的基本概念到高级使用的方方面面。Hadoop是...
Spark SQL是Apache Spark项目的一部分,专门用于处理结构化数据,它提供了一种高效且易于使用的接口来进行SQL查询和数据处理。在这个"Spark SQL上海摩拜共享单车数据分析源码"项目中,开发者利用Spark SQL对上海摩拜...
Spark SQL是Apache Spark项目的一部分,它提供了一个用于处理结构化数据的强大框架,允许开发者使用SQL或者DataFrame/Dataset API来查询数据。本资料“Spark SQL源码概览.zip”包含了一份详细的Spark SQL源码分析,...
首先,文档的开篇介绍了Spark SQL的基本概念,以及Dataset、DataFrame和RDDs之间的对比和联系。在Spark中,Dataset是一种分布式数据集合,它提供了类型安全、强类型的编程接口。而DataFrame是Dataset的一个特例,它...
通过以上知识点的提炼,我们可以看到,“Spark实战高手之路-第6章Spark SQL编程动手实战(1)”这本书籍不仅涵盖了从零开始学习Spark的基础知识,还深入介绍了如何通过实践项目来提升技能水平,最终成为Spark高手的...
(1)通过实验掌握 Spark SQL 的基本编程方法; (2)熟悉 RDD 到 DataFrame 的转化方法; (3)熟悉利用 Spark SQL 管理来自不同数据源的数据。 (4)java程序实现SparkSQL 二、实验环境 Windows 10 VMware ...
在本压缩包“Python3实战Spark大数据分析及调度-第8章 Spark ...通过学习这个章节,读者将能够掌握使用Python3和Spark SQL进行大数据分析的基本技能,从而能够处理和查询大规模数据集,进行复杂的数据挖掘和业务洞察。
在深入探讨本教程之前,我们先来了解一下Spark SQL的基本概念及其在大数据处理中的作用。Apache Spark是一款开源的大数据处理框架,它支持大规模数据集的分布式计算,并以其高效的数据处理能力和广泛的兼容性而闻名...
Spark SQL是Apache Spark项目的一...总的来说,"spark-sql入门"的学习旅程将涵盖Spark SQL的基本概念、API使用、数据处理操作以及与Hive的集成。通过这个资源,初学者将能够快速上手,并逐步掌握处理大规模数据的技能。
3. **SQL支持**:介绍如何注册DataFrame为临时视图,然后通过SQL查询这些视图,以及如何使用Spark SQL的内置函数。 4. **数据源**:讲解如何读写各种数据源,如Parquet、JSON、CSV、Hive表等,以及自定义数据源的...
以上内容涵盖了 Spark SQL 的基本操作、Hive 表的创建与加载、Spark Shell 如何访问 Hive 表、查询执行计划的查看方法以及如何使用 ThriftServer 和 Beeline 进行连接查询。这些知识点对于初学者来说是十分重要的...
1. **Spark Core**:作为Spark的基础模块,Spark Core提供了分布式任务调度、内存管理、错误恢复和与其他存储系统交互的基本功能。它支持RDD(弹性分布式数据集)这一核心概念,使得数据处理具有高效性和容错性。...
### Spark性能测试报告-Spark SQL在不同存储格式下的性能对比 #### 测试目的与背景 本文旨在通过一系列的实验对比Spark SQL在不同存储格式(包括txt、Parquet、Ya100)下的性能表现。考虑到不同的机器环境及配置...
RDD(弹性分布式数据集)是 Spark 的基本数据结构,`cache()` 方法用于将计算结果缓存到内存中,以避免重复计算,提高数据处理速度。在示例代码中,`result.cache()` 将 SQL 查询的结果缓存,以供后续使用。 #### ...
Spark采用弹性分布式数据集(RDD)作为其基本数据抽象,当执行SQL查询时,Spark将其转化为逻辑执行计划,然后进一步转化为物理执行计划。逻辑执行计划涉及RDD的划分和任务依赖关系,如窄依赖和宽依赖。宽依赖通常会...