概念
类 Hadoop MapReduce 通用并行框架,大数据处理计算引擎
Job 中间输出结果可以保存在内存中
Spark 将 Scala 作为应用程序框架
Spark 通过 Mesos 第三方集群框架,可以在 Hadoop 文件系统中并行运行
特点
- Java、Scala、Python 和 R APIs。
- 可扩展至超过 8000 个结点。
- 能够在存储器内缓存数据集以进行交互式数据分析。
- Scala 或 Python 中的交互式命令行接口可降低横向扩展数据探索的反应时间。
- Spark Streaming 对即时数据流的处理具有可扩展性、高吞吐量、可容错性等特点。
- Spark SQL 支持结构化和关系式查询处理(SQL)。
- MLlib 机器学习算法和 Graphx 图形处理算法的高端库。
性能
更快的速度
内存计算,Spark比Hadoop快100倍
易用性
80多个高级运算符
通用性
Spark Core(离线计算),Spark Sql(交互式查询),Spark Streaming(实时流式计算),MLlib(机器学习),Graphx(图计算)
支持多种资源管理器
Hadoop YARN,Mesos
存储文件格式
列存储:parquet,ORC
行存储:Avro,JSON,CSV,Text,Binary
Spark 可以和 Alluxio, HDFS、 Cassandra 、OpenStack Swift 和 Amazon S3 等接口搭载
支持 Hive 特性
Hive的查询,包括:SELECT, GROUP BY, ORDER BY, CLUSTER BY, STORT BY
所有的Hive操作,包括:关系操作符,如 =, <=>, ==, <>, <, >, >=, <= 等 ( 这里的<=>操作比较罕见,相当于ifnull(a!=b, false),比如 1<=>2 值为false, 1<=>1 值为true );数学运算符,如 +, -, *, /, %等;逻辑操作符,如 AND, &&, OR, || 等;复杂构造器;数学函数,如 sign, ln, cos 等;字符串函数,如 instr, length, printf。
用户自定义函数, UDF
用户自定义聚合函数,UDAF
用户自定义序列化格式,SerDes
窗口函数
关联操作,如 JOIN, {LEFT | RIGHT | FULL} OUTER JOIN, LEFT SEMI JOIN, CROSS JOIN
合并操作
子查询,如 SELECT col FROM (SELECT a+b AS col from t1) t2
抽样 sample
解释执行计划 explain
分区表 以及 动态分区插入
视图 VIEW
DDL函数,如 CREATE TABLE, CREATE TABLE AS SELECT, ALTER TABLE
支持大部分Hive的数据类型,包含:TINYINT, SMALLINT, INT, BIGINT, BOOLEAN, FLOAT, DOUBLE, STRING, BINARY, TIMESTAMP, DATE, ARRAY<>, MAP<>, STRUCT<>