spark SQL和hive到底什么关系

spark SQL和hive到底什么关系,第1张

历史上存在的原理,以前都是使用hive来构建数据仓库,所以存在大量对hive所管理的数据查询的需求。而hive、shark、sparlSQL都可以进行hive的数据查询。shark是使用了hive的sql语法解析器和优化器,修改了执行器,使之物理执行过程是跑在spark上;而sparkSQL是使用了自身的语法解析器、优化器和执行器,同时sparkSQL还扩展了接口,不单单支持hive数据的查询,可以进行多种数据源的数据查询。

park+shark ,可以直接用hive原来的表。

phpHiveAdmin将HQL请求发送给HAproxy负载的Hive server集群。 三、phpHiveAdmin读取Metadata的数据,注意这里是只读,并不存在对Metadata的读写。因为元数据非常重要,涉及到底层数据的正确性,所以不能随意修改。

一、启动方法

/data/spark-140-bin-cdh4/bin/spark-sql --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2

注:/data/spark-140-bin-cdh4/为spark的安装路径

/data/spark-140-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 orgapachesparksqlSQLContext(sc)

val df = sqlContextreadjson("/examples/src/main/resources/peoplejson")

查看所有数据:dfshow()

查看表结构:dfprintSchema()

只看name列:dfselect("name")show()

对数据运算:dfselect(df("name"), df("age") + 1)show()

过滤数据:dffilter(df("age") > 21)show()

分组统计:dfgroupBy("age")count()show()

1、查询txt数据

import sqlContextimplicits_

case class Person(name: String, age: Int)

val people = sctextFile("/examples/src/main/resources/peopletxt")map(_split(","))map(p => Person(p(0), p(1)trimtoInt))toDF()

peopleregisterTempTable("people")

val teenagers = sqlContextsql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")

2、parquet文件

val df = sqlContextreadload("/examples/src/main/resources/usersparquet")

3、hdfs文件

val df = sqlContextreadload("hdfs://namenodeHadoop:9000/user/hive/warehouse/spark_testdb/test_parquet/part-r-00001gzparquet")

4、保存查询结果数据

val df = sqlContextreadload("/examples/src/main/resources/usersparquet")

dfselect("name", "favorite_color")writesave("namesAndFavColorsparquet“)

四、Spark sql性能调优

缓存数据表:sqlContextcacheTable("tableName")

取消缓存表:sqlContextuncacheTable("tableName")

sparksqlinMemoryColumnarStoragecompressedtrue 当设置为true时,Spark SQL将为基于数据统计信息的每列自动选择一个压缩算法。

sparksqlinMemoryColumnarStoragebatchSize 10000 柱状缓存的批数据大小。更大的批数据可以提高内存的利用率以及压缩效率,但有OOMs的风险

以上就是关于spark SQL和hive到底什么关系全部的内容,包括:spark SQL和hive到底什么关系、hive kerberos sparksql怎么创建hivecontext、如何使用 Spark SQL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9872507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存