SparkRDDOperation.scala
来源:互联网 发布:java sql date insert 编辑:程序博客网 时间:2024/06/13 20:19
package sparkExampleimport org.apache.log4j.{Level, Logger}import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}/** * Created by xiaoxu */object SparkRDDOperation { def main(args: Array[String]) { // 初始化 System.setProperty("hadoop.home.dir", "E:\\winutils-hadoop-2.6.4\\hadoop-2.6.4") val conf = new SparkConf().setMaster("local[2]").setAppName(this.getClass.getName) val sc = new SparkContext(conf) // 设置Log级别 Logger.getRootLogger.setLevel(Level.INFO) // 读取文件夹下的所有的文件 sc.textFile("hdfs://hadoop1:9000/sparkExample") // 读取指定的文件 sc.textFile("hdfs://hadoop1:9000/sparkExample/sparkExample.txt") // 读取系统中的文件 sc.textFile("file:/opt/sparkExample/sparkExample.txt") // 直接读取系统中的文件 sc.textFile("/opt/sparkExample/sparkExample.txt") // 直接读取系统中的文件夹下的所有的文件 sc.textFile("/opt/sparkExample") // 直接读取系统中的文件夹中的匹配的文件 sc.textFile("/opt/sparkExample/*.txt") // 构造数据 val parallelize: RDD[Int] = sc.parallelize(1 to 9, 3) // 对每一个数据进行*2 val map: RDD[Int] = parallelize.map(x => x * 2) map.count() // 对数据进行过滤 val filter: RDD[Int] = parallelize.filter(x => x > 3) filter.count() // 对parallelize中的数据依次往后推10个 val map1: RDD[Int] = parallelize.flatMap(x => x to 10) map1.collect() //对数据union操作后再去重 val union: RDD[Int] = map.union(map1).distinct() union.collect() // 对两个RDD求交集,并去重 val intersection: RDD[Int] = map.intersection(map1).distinct() intersection.collect() // 构造数据 val parallelize2: RDD[(Int, Int)] = sc.parallelize(Array((1, 1), (1, 2), (2, 3), (3, 4)), 3) // 相同key一样的进行对value进行累加 val key: RDD[(Int, Int)] = parallelize2.reduceByKey((x, y) => x + y) // 按照key一样的把数据分组 val key1: RDD[(Int, Iterable[Int])] = parallelize2.groupByKey() key1.collect() // 构造数据 val parallelize3: RDD[Int] = sc.parallelize(List(1, 2, 3, 4, 5, 6), 2) // 结果是9,原因是分了两个区,在每一个区中拿最大的那个进行相加 val aggregate: Int = parallelize3.aggregate(0)(Math.max(_, _), _ + _) aggregate.toString // 按照key进行排序 val key2: RDD[(Int, Int)] = parallelize2.sortByKey() key2.collect() // 对数据进行笛卡尔积操作 val parallelize4: RDD[(Int, Int)] = sc.parallelize(Array((1, 1), (1, 2), (2, 3), (3, 4)), 2) // 按照key对数据进行JOIN操作 parallelize2.join(parallelize4).collect().toBuffer // 按照KEY进行统计,并把每个RDD的元素进行查看 parallelize2.cogroup(parallelize4).collect().toBuffer //按照KEY进行统计,并把每个RDD按照元组的形式进行展示 parallelize2.cartesian(parallelize4).collect().toBuffer // 构造数据 val parallelize5: RDD[Int] = sc.parallelize(1 to 10, 2) // 获取数据的前一个RDD parallelize5.pipe("head -n 1").collect().toBuffer // 按照数据进行3:7分,并查看数据与个数 val split: Array[RDD[Int]] = parallelize5.randomSplit(Array(0.3, 0.7), 1) split(0).collect().toBuffer split(1).count() // 构造数据 val parallelize6: RDD[Int] = sc.parallelize(1 to 9, 3) val parallelize7: RDD[Int] = sc.parallelize(1 to 3, 3) // subtract获取两个数据差集 parallelize6.subtract(parallelize7).collect().toBuffer // 构造数据 val parallelize8: RDD[Int] = sc.parallelize(Array(1, 2, 3, 4, 5)) val parallelize9: RDD[Int] = sc.parallelize(Array("A", "B", "C", "D", "E")) // 对两个RDD进行合并,前提是分区的数量必须一致 parallelize8.zip(parallelize8).collect().toBuffer // 获取前3个元素 parallelize8.take(3).toBuffer // 获取数据的前一个 parallelize8.first() // 任意获取四个元素 parallelize8.takeSample(false, 5) // 按照顺序获取四个元素 parallelize8.takeOrdered(4) // 终止程序 sc.stop() }}
0 0
- SparkRDDOperation.scala
- Scala
- Scala
- scala
- scala
- Scala
- scala
- Scala
- scala
- scala
- Scala
- Scala
- scala
- scala
- Scala
- Scala
- Scala
- Scala
- 冒泡算法及针对有序的优化
- YDB资源整理汇总
- 268. Missing Number
- MethodTrace 生成的trace文件为空
- L0、L1与L2范数
- SparkRDDOperation.scala
- java中变量
- 腾讯EC .net API对接第三方系统
- MongoDB 分片集群故障RECOVERING 处理纪实
- 水平居中设置
- 挂起任务,OSTaskSuspend()
- bochs调试指令
- Tomcat8访问管理页面localhost出现:403 Access Denied
- 电子电路基础知识—电流源