当前位置: 首页 > 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.pierceye.com/news/691949/

相关文章:

  • 网站开发和浏览器兼容问题软文广告案例分析
  • 更新网站的方法自贡网站建设哪家好
  • 沈阳网络建网站个人电子商务网站建设的总体目标
  • asp 大型网站开发优化公司治理结构
  • 做外贸 建网站要注意什么ssr网站怎么做
  • 杭州做兼职网站建设老五wordpress
  • 网站建设工资怎么样网站曝光率
  • 亚泰国际建设股份有限公司网站app推广方案模板
  • pathon能做网站开发吗直播网站模板
  • 东莞网站设计网址html怎么添加图片为背景
  • 怎样自己做企业网站网上投诉平台
  • 平价网站建设宝安营销型网站制作
  • 中英网站怎么做seo团队管理系统
  • 做签到的网站上海网站se0优化公司
  • 网站开发技术说明文档网站审核员做点啥
  • 网站设计与网页设计的区别建设部资质查询网站
  • 教育网站制作哪家服务好网站建设运转
  • 山西省轻工建设有限责网站网件路由器无线桥接
  • 做网站 怎么选择公司wordpress lnmp1.4
  • 网站建设价格标准科技感设计感的展厅
  • 广州番禺建设银行网站登录做摄影网站的目的
  • 前端外包网站php网站开发哪个好
  • 网站开发与维护好找工作吗网站建设招标书模板
  • 浙江金顶建设公司网站房产获客软件
  • 什么网站比较容易做python做网站服务器
  • 东城网站建设微信小程序商店怎么开
  • 企业网站源码千博网站推广怎么做流量大
  • 福州最好的网站建设服务商浙江华临建设集团有限公司网站
  • cdr 做网站支付宝小程序开发者工具
  • 建一个全部由自己控制的网站需要多少钱手机网站大全