当前位置: 首页 > news >正文

自己买主机可以做网站吗网站自己做的记者证

自己买主机可以做网站吗,网站自己做的记者证,域名网站空间,私人网页服务器1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须…1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须是2的倍数? 当不是2的倍数时, 好多的位置取不到 比如 为5 01234 123都取不到 必须保证,相关的位数全是1,所以必定2的倍数 2的n次方 所以位运算不是什么时候都能用的 2.转换算子 1.单值转换算子 1.filter过滤器 1.注意 过滤只是将数据进行校验,而不是修改数据. 结果为true就保留,false就丢弃 2.代码 JavaSparkContext sc new JavaSparkContext(local[*],filter);ListString dataList Arrays.asList(giao,giao2,zhangsan,lisi); JavaRDDString rdd1 sc.parallelize(dataList); //JavaRDDString rddFilter1 rdd1.filter(null); JavaRDDString rddFilter2 rdd1.filter(s-s.substring(0,1).toLowerCase().equals(g)); //rddFilter1.collect().forEach(System.out::println); System.out.println(----------------------------); rddFilter2.collect().forEach(System.out::println);2.dinstinct 1.原理 分组 通过使用分组取重,相同的话,都是一个组了,所以Key唯一 应该是先分组,然后吧K提出来就好了 2.代码 JavaSparkContext sc new JavaSparkContext(local[*],Distinct);ListString dataList Arrays.asList(giao1,gg1,gg1,gg2,gg2,gg1,gg3,gg1,gg5,gg3); JavaRDDString rdd1 sc.parallelize(dataList); JavaRDDString rddDistinct rdd1.distinct(); rddDistinct.collect().forEach(System.out::println);3.排序 1.介绍 sortby方法需要传3个参数 参数1 排序规则 参数2 升序还是降序(false) 默认升序(true) 参数3 排序的分区数量(说明方法底层是靠shuffle实现,所以才有改变分区的能力) 2.排序规则 排序规则,是按照结果去排序 其实是用结果生成一个K值,通过K值进行排序,然后展示 V值 或者说权值, 按照权值排序 将Value变成K V 3.代码 public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],SparkSort);ListString dataList Arrays.asList(kunkun,giaogiao,GSD,JJ,chenzhen,Lixiaolong);JavaRDDString rdd1 sc.parallelize(dataList);JavaRDDString rddSort rdd1.sortBy(s - {switch (s.substring(0, 1).toLowerCase()) {case k:return 5;case g:return 3;case j:return 1;case c:return 2;case l:return 4;}return null;}, false, 3);rddSort.collect().forEach(System.out::println);}2.键值对转换算子 1.介绍 1.什么是键值对转换算子 如何区分是键值对方法还是单值方法呢? 通过参数来判断, 如果参数是一个值,就是单值,如果是2个,就是键值对 2.元组是不是键值对? public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],KVRDD);ListInteger dataList Arrays.asList(1, 2, 3, 4, 5);JavaRDDInteger rdd1 sc.parallelize(dataList);JavaRDDTuple2 rddmap rdd1.map(num - new Tuple2(num, num));rddmap.collect().forEach(System.out::println); }答案是,不是,因为这个的返回值,是一个元组,而元组整体,是一个单值,所以,是单值 只有返回值 是RDDK1,V1 的时候,才是键值对类型算子 3. 使用Pair转换键值对算子 public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],RddPair);ListInteger dataList Arrays.asList(1, 2, 3, 4, 5);JavaRDDInteger rdd sc.parallelize(dataList);JavaPairRDDInteger, Integer rddPair rdd.mapToPair(num - new Tuple2(num, num));rddPair.collect().forEach(System.out::println);}4.直接在获取时转换键值对 这里使用的是parallelizePairs方法 获取的是JavaPairRDD public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],KVRDD);JavaPairRDDString, Integer rddPair sc.parallelizePairs(Arrays.asList(new Tuple2(a, 1),new Tuple2(a, 2),new Tuple2(b, 1),new Tuple2(b, 1),new Tuple2(c, 2),new Tuple2(c, 1)));rddPair.collect().forEach(System.out::println);}5.分组来获取键值对 java public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],RddPair);ListString dataList Arrays.asList(aa,bb,aa,bb,cc);JavaRDDString rdd sc.parallelize(dataList);JavaPairRDDObject, IterableString rddGroup rdd.groupBy(s-s);rddGroup.collect().forEach(System.out::println); }2.mapValue方法 1.介绍 直接对value进行操作,不需要管K 当然,也有mapKey方法可以无视Value操作Key 2.代码演示 public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],KVRDD);JavaPairRDDString, Integer rddPair sc.parallelizePairs(Arrays.asList(new Tuple2(a, 1),new Tuple2(a, 2),new Tuple2(b, 1),new Tuple2(b, 1),new Tuple2(c, 2),new Tuple2(c, 1)));JavaPairRDDString, Integer mapV rddPair.mapValues(num - num * 2);mapV.collect().forEach(System.out::println);}3.WordCount实现 iter.spliterator().estimateSize()); spliterator SpliteratorSplit Iterator是Java 8引入的一个新接口用于支持并行遍历和操作数据。它是Iterator的扩展可以用于在并行流Parallel Stream中对数据进行划分和遍历从而实现更高效的并行处理 spliterator()方法是在Iterable接口中定义的一个默认方法用于生成一个Spliterator对象以支持数据的并行遍历。它的具体作用是将Iterable中的数据转换为一个可以在并行流中使用的Spliterator对象。 estimateSize estimateSize()方法是Java中Spliterator接口的一个方法用于估算Spliterator所包含的元素数量的大小。Spliterator是用于支持并行遍历和操作数据的接口而estimateSize()方法提供了一个估计值用于在处理数据时预测Spliterator包含的元素数量。 public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],RddPair);ListString dataList Arrays.asList(aa,bb,aa,bb,cc);JavaRDDString rdd sc.parallelize(dataList);JavaPairRDDObject, IterableString rddGroup rdd.groupBy(s-s);JavaPairRDDObject, Long wordCount rddGroup.mapValues(iter - iter.spliterator().estimateSize());wordCount.collect().forEach(System.out::println); }3.groupby 与groupByKey 1 .代码 public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],G1);JavaPairRDDString, Integer rddPair;rddPair sc.parallelizePairs(Arrays.asList(new Tuple2(a, 1),new Tuple2(a, 2),new Tuple2(b, 1),new Tuple2(b, 1),new Tuple2(c, 2),new Tuple2(c, 1)));JavaPairRDDString, IterableInteger rddGroupByKey rddPair.groupByKey();JavaPairRDDString, IterableTuple2String, Integer rddGroupBy rddPair.groupBy(t - t._1);rddGroupByKey.collect().forEach(System.out::println);}2.分析区别 1.参数 GroupBy是自选规则 而GroupByKey是将PairRDD的Key当做分组规则2.结果 GroupBy是将作为单值去分组,即使RDD是Pair, 而GroupByKey 则是将K V分开 ,将V作为组成员 3.注意 GroupByKey是不能进行随意使用的,底层用的含有shuffle,如果计算平均值,就不能通过GroupByKey直接进行计算. 4.reduce与reduceByKey 1.介绍 多个变量进行同样的运算规则 Stream是1.8新特性, 计算的本质 两两结合 reduce 2. 代码 public static void main(String[] args) {JavaSparkContext sc new JavaSparkContext(local[*],Reduce);JavaPairRDDString, Integer rddPair;rddPair sc.parallelizePairs(Arrays.asList(new Tuple2(a, 1),new Tuple2(a, 2),new Tuple2(b, 1),new Tuple2(b, 1),new Tuple2(c, 2),new Tuple2(c, 1)));rddPair.reduceByKey(Integer::sum).collect().forEach(System.out::println);}3.理解 相同Key值的V进行运算,所以底层是有分组的,所以底层是一定有Shuffle,一定有改变分区的能力,改变分区数量和分区规则. 4.与groupByKey区别 reduceByKey 将相同key的数量中1的V进行两两聚合 reduceByKey 相同的key两两聚合在shuffle落盘之前对分区内数据进行聚合这样会减少落盘数据量并不会影响最终结果(预聚合) 这就是combine 有钱先整IBM小型机 Shuffle优化 1.花钱 2.调大缓冲区溢出次数减少 3. sortByKey 想比较必须实现可比较的接口 默认排序规则为升序, 通过K对键值对进行排序 行动算子 通过调用RDD方法让Spark的功能行动起来 map 是在new 转换算子 得到的是RDD 注意 转换跑不起来 行动能跑起来 这句话是错误的 当使用sort时,也是能跑起来的,但是还是转换算子 第一行运行占用内存,第一个for 运算需要内存,但是第一行占用了大量内存,所以第一行浪费了,这就需要懒加载,所以第一行的执行时机是在第二个for运行前使用的. 注意map collect 不是懒加载,只是没人调用他的job(RDD算子内部的代码) RDD算子外部的代码都是在Driver端
http://www.zqtcl.cn/news/691949/

相关文章:

  • 甘肃省建设厅官方网站信息网腾讯企点qq
  • 搜狗收录网站建个网络平台多少钱
  • 电子商务网站开发目的和意义郑州网站优化的微博_腾讯微博
  • asp.net网站建设项目实战 董义革wordpress伪静态规则访问失败
  • 网站添加锚点网站备案名称更换
  • 手机商城网站如何企业网站建设及运营现状分析
  • 网站建设注意的问题网站模板 知乎
  • 自主设计和创建网站网站建设价格便宜
  • 高手做网站财经资讯网站该怎么做推广
  • 加强农业网站建设青岛全网营销推广
  • 做淘客网站怎么样济南软件公司排名
  • 企业网站优化兴田德润怎么样网站建设建设公司资质要求
  • 如何把网站做跳转浏览器链接地址wordpress 离线更新
  • 乌海学校网站建设wordpress默认主题下载
  • 海兴县做网站如何选网站建设公司
  • asp网站设为首页代码孝仙洪高速公路建设指挥部网站
  • 浦东新区网站开发人才网站建设策划书
  • 网站做flash好不好免费微信公众号素材网
  • 开发网站嵌入广告汕头电商网站建设
  • 电脑做科目一网站购物网站怎么创建
  • c2c网站建设公司wordpress被公众号干掉
  • wordpress托管建站网站页面布局和样式设计
  • 建站平台江苏省建设监理协会网站
  • 安徽网站开发培训价格百度seo排名公司
  • 青海网站建设费用oa系统和erp系统区别
  • 个人做网站的注意事项网站开发工程师6
  • 镇江百度网站建设北京网站开发价格
  • 大岭山镇仿做网站推广计划表格
  • 网站备案地址不是我的地址怎么办建设银行网站查询业务收费吗
  • 电商网站设计内容网站编辑及seo招聘