`

spark sql基本使用方法介绍

阅读更多

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
0
分享到:
评论

相关推荐

    Learning Spark SQL - Aurobindo Sarkar

    1. Spark SQL基础:介绍Spark SQL的基本概念和环境设置。 2. DataFrame和Dataset API:讲解DataFrame和Dataset的创建、操作及转换。 3. SQL支持:解释如何使用SQL语句进行查询,包括JOIN、GROUP BY、ORDER BY等操作...

    Spark SQL操作大全.zip

    本资料主要涵盖了Spark SQL的基础概念、核心特性、操作方法以及实战应用,旨在帮助读者全面理解和掌握Spark SQL的使用。 1. **Spark SQL简介** Spark SQL将Apache Spark的高性能计算能力与SQL查询语言相结合,允许...

    Spark SQL 2.3.0:深入浅出

    Spark SQL的架构首先提供多种访问方式,包括使用HiveQL、Spark编程方式(SQL或DataFrame/Dataset API)、以及Streaming SQL方式来提交执行程序。提交后,Spark SQL会生成一个未完全解析的逻辑执行计划,接着利用内部...

    Spark_SQL大数据实例开发教程.pdf by Spark_SQL大数据实例开发教程.pdf (z-lib.org)1

    书中通过实际案例,详细介绍了Spark SQL的各种特性和操作方法。 首先,书中的前言提到了Hadoop之父Doug Cutting的观点,认为MapReduce在大数据项目中的应用将被Apache Spark取代,这表明Spark SQL作为Spark的一部分...

    电子书.rar《Spark SQL入门与实践指南》等

    此外,书中还会介绍如何利用Spark SQL进行复杂的数据分析和ETL(提取、转换、加载)任务。 《Hadoop权威指南(中文第3版)》是关于Hadoop的详尽参考资料,涵盖了从Hadoop的基本概念到高级使用的方方面面。Hadoop是...

    Spark SQL上海摩拜共享单车数据分析源码

    Spark SQL是Apache Spark项目的一部分,专门用于处理结构化数据,它提供了一种高效且易于使用的接口来进行SQL查询和数据处理。在这个"Spark SQL上海摩拜共享单车数据分析源码"项目中,开发者利用Spark SQL对上海摩拜...

    Spark SQL源码概览.zip

    Spark SQL是Apache Spark项目的一部分,它提供了一个用于处理结构化数据的强大框架,允许开发者使用SQL或者DataFrame/Dataset API来查询数据。本资料“Spark SQL源码概览.zip”包含了一份详细的Spark SQL源码分析,...

    mastering-spark-sql.pdf

    首先,文档的开篇介绍了Spark SQL的基本概念,以及Dataset、DataFrame和RDDs之间的对比和联系。在Spark中,Dataset是一种分布式数据集合,它提供了类型安全、强类型的编程接口。而DataFrame是Dataset的一个特例,它...

    Spark实战高手之路-第6章Spark SQL编程动手实战(1)

    通过以上知识点的提炼,我们可以看到,“Spark实战高手之路-第6章Spark SQL编程动手实战(1)”这本书籍不仅涵盖了从零开始学习Spark的基础知识,还深入介绍了如何通过实践项目来提升技能水平,最终成为Spark高手的...

    Hadoop原理与技术SparkSQL操作实验

    (1)通过实验掌握 Spark SQL 的基本编程方法; (2)熟悉 RDD 到 DataFrame 的转化方法; (3)熟悉利用 Spark SQL 管理来自不同数据源的数据。 (4)java程序实现SparkSQL 二、实验环境 Windows 10 VMware ...

    Python3实战Spark大数据分析及调度-第8章 Spark SQL.zip

    在本压缩包“Python3实战Spark大数据分析及调度-第8章 Spark ...通过学习这个章节,读者将能够掌握使用Python3和Spark SQL进行大数据分析的基本技能,从而能够处理和查询大规模数据集,进行复杂的数据挖掘和业务洞察。

    基于大数据 Spark SQL的日志分析 视频教程 虚拟主机 和 data文件

    在深入探讨本教程之前,我们先来了解一下Spark SQL的基本概念及其在大数据处理中的作用。Apache Spark是一款开源的大数据处理框架,它支持大规模数据集的分布式计算,并以其高效的数据处理能力和广泛的兼容性而闻名...

    spark-sql入门

    Spark SQL是Apache Spark项目的一...总的来说,"spark-sql入门"的学习旅程将涵盖Spark SQL的基本概念、API使用、数据处理操作以及与Hive的集成。通过这个资源,初学者将能够快速上手,并逐步掌握处理大规模数据的技能。

    Learning Spark SQL_source_code - Aurobindo Sarkar

    3. **SQL支持**:介绍如何注册DataFrame为临时视图,然后通过SQL查询这些视图,以及如何使用Spark SQL的内置函数。 4. **数据源**:讲解如何读写各种数据源,如Parquet、JSON、CSV、Hive表等,以及自定义数据源的...

    Spark SQL学习笔记

    以上内容涵盖了 Spark SQL 的基本操作、Hive 表的创建与加载、Spark Shell 如何访问 Hive 表、查询执行计划的查看方法以及如何使用 ThriftServer 和 Beeline 进行连接查询。这些知识点对于初学者来说是十分重要的...

    spark core、spark sql以及spark streaming 的Scala、java项目混合框架搭建以及大数据案例

    1. **Spark Core**:作为Spark的基础模块,Spark Core提供了分布式任务调度、内存管理、错误恢复和与其他存储系统交互的基本功能。它支持RDD(弹性分布式数据集)这一核心概念,使得数据处理具有高效性和容错性。...

    spark sql优化.doc

    RDD(弹性分布式数据集)是 Spark 的基本数据结构,`cache()` 方法用于将计算结果缓存到内存中,以避免重复计算,提高数据处理速度。在示例代码中,`result.cache()` 将 SQL 查询的结果缓存,以供后续使用。 #### ...

    Spark性能测试报告-Spark SQL在不同存储格式下的性能对比

    ### Spark性能测试报告-Spark SQL在不同存储格式下的性能对比 #### 测试目的与背景 本文旨在通过一系列的实验对比Spark SQL在不同存储格式(包括txt、Parquet、Ya100)下的性能表现。考虑到不同的机器环境及配置...

    Spark环境下SQL优化的方法.pdf

    Spark采用弹性分布式数据集(RDD)作为其基本数据抽象,当执行SQL查询时,Spark将其转化为逻辑执行计划,然后进一步转化为物理执行计划。逻辑执行计划涉及RDD的划分和任务依赖关系,如窄依赖和宽依赖。宽依赖通常会...

Global site tag (gtag.js) - Google Analytics