SparkRDDOperation.scala

package sparkExample

import org.apache.log4j.{Level, Logger}
import org.apache.spark.rdd.RDD
import 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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchFieldException: DEFAULT_TINY_CACHE_SIZE at org.apache.spark.network.util.NettyUtils.getPrivateStaticField(NettyUtils.java:131) at org.apache.spark.network.util.NettyUtils.createPooledByteBufAllocator(NettyUtils.java:118) at org.apache.spark.network.server.TransportServer.init(TransportServer.java:95) at org.apache.spark.network.server.TransportServer.<init>(TransportServer.java:74) at org.apache.spark.network.TransportContext.createServer(TransportContext.java:114) at org.apache.spark.rpc.netty.NettyRpcEnv.startServer(NettyRpcEnv.scala:118) at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:454) at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:453) at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:2237) at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:160) at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:2229) at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:458) at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:56) at org.apache.spark.SparkEnv$.create(SparkEnv.scala:246) at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:175) at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:257) at org.apache.spark.SparkContext.<init>(SparkContext.scala:432) at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2509) at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:909) at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:901) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:901) at com.cssl.scala720.KafkaSparkStreamingHBase$.main(KafkaSparkStreamingHBase.scala:28) at com.cssl.scala720.KafkaSparkStreamingHBase.main(KafkaSparkStreamingHBase.scala) Caused by: java.lang.NoSuchFieldException: DEFAULT_TINY_CACHE_SIZE at java.lang.Class.getDeclaredField(Class.java:2070) at org.apache.spark.network.util.NettyUtils.getPrivateStaticField(NettyUtils.java:127) ... 23 more Process finished with exit code 1
最新发布
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒马coding

你的支持是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值