• Spark 是一种专门用于交互式查询、机器学习和实时工作负载的开源框架。 它没有自己的存储系统,但会在其他存储系统,如
    HDFS,或其他热门存储,如 Amazon Redshift 、 Amazon S3 、Couchbase、Cassandra
    等之上运行分析。
val service = new UsersService
 //读取整个表
 val allRdd:RDD[Users] = service.selectAll()
 //字段筛选
 val allRdd:RDD[Users] = service.selectAllWithCols(Seq(“name”,“age”))
 //条件过滤
 val allRdd:RDD[Users] = service.selectAllByWhere(“age>10”)
 //读取1000条数据
 val demoRdd:RDD[Users] = service.selectDemo()
 //写入表
 service.insertInto(demoRDD)
 service.createTable(demoRDD)

Spark开发依赖包 spark开源项目_Hadoop

关于Spark: Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更
好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法Spark与Hadoop的对比Spark的中间数据放到内存中,对于迭代运算效率更高。 Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。 Spark比Hadoop更通用。 Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map, filter, flatMap, sample, groupByKey, reduceByKey, union,

join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions操作。 这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的存储、分区等。可以说编程模型比Hadoop更灵活。 不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。 容错性。 在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是logging
the updates。用户可以控制采用哪种方式来实现容错。可用性。 Spark通过提供丰富的Scala, Java,Python

API及交互式Shell来提高可用性。Spark与Hadoop的结合Spark可以直接对HDFS进行数据的读写,同样支持Spark on YARN。Spark可以与MapReduce运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。Spark的适用场景Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。 总的来说Spark的适用面比较广泛且比较通用。