zoukankan      html  css  js  c++  java
  • 有关RDD的基础学习1

       1.spark rdd为什么不能嵌套?
        譬如 val rdd1=sc.parallel(range(1,100))
        val rdd2=sc.parallel(range(1,100))
        rdd1.map(x=>rdd.count())
        因为rdd的构造器中rdd(@trancient sc:SparkContext),这个sc是不可序列化的,而rdd的map之类的操作,需要把参数序列化,
        这样就会出问题,sc就成了null,会报空值异常.
        为什么sc要设置为不要序列化? 因为sc本身就不能序列化,没有继承serializble接口.
        
        scala中如何使用正则进行抽取字符串中想要的内容?使用模式匹配,例如:
        val regex="localhost[(.*)]".r
        val master="localhost[4]"
        master match{
            case regex(threads) => converttoInt(threads)
            case _=> println("not found")
        }
       2.spark rdd 中的partitioner有什么用?
        确定数据是如何被划分到partitions里面的,譬如说rdd.repartition就使用了这个类.
        rdd内容是1,2,3,4,5,设置了2个分区,每一个分区的数据会是怎么样的?
        查看代码你会发现是会分成1,2一组,3,4,5一组
        那rdd的partitioner有什么作用呢?
        你调用rdd.repartition的时候,数据就根据这个进行重新分组了.
        还有如果是转换成新的rdd出现了shuffle的时候就使用这个partitioner.
        如果你想把数据重新分组,分成大于3的一组,其他的为一组,如何做?
       

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    import org.apache.spark.HashPartitioner
    
    object Test extends App {
       //在windows平台上调试运行,需要设置hadoop的home
      System.setProperty("hadoop.home.dir", "E:\app\hadoop");
    
      val sparkConf = new SparkConf()
      sparkConf.setMaster("local[2]").setAppName(Test.getClass.toString().dropRight(1))
      val sc = new SparkContext(sparkConf)
    
      val rdd = sc.parallelize(Seq(1, 2, 3, 4, 5), 2)
        .map(i => if(i>3) (1,i) else (0,i))
        //.repartition(2)
        .partitionBy(new HashPartitioner(2))
         .map( {case (a,b)=>b })
         
      println(rdd.toDebugString)
      rdd.foreachPartition { p =>
        p.foreach { l => println(l) }
        println(p.hashCode())
      }
    
      sc.stop()
    }
  • 相关阅读:
    记一次生产环境Nginx间歇性502的事故分析过程
    如何为nginx配置https(免费证书)
    nginx + tomcat配置https的两种方法
    证书之间的转换(crt pem key)
    FreeSwitch: ESL Inbound内联模式下如何设置单腿变量
    CompletableFuture笔记
    java中整数常量池(-128~127)上限如何调整?
    redis过期机制及注意事项
    一次完整的通话过程SIP报文分析
    SIPp测试freeswitch用户注册
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/6875785.html
Copyright © 2011-2022 走看看