rdd.collect()后得到的List排序问题:Exception in thread “main“ java.lang.UnsupportedOperationException

74181 vs 74283:4款ALU芯片构建8位运算器的性能与复杂度对比 本文深入对比了使用74181、74283等4款ALU芯片构建8位运算器的性能与复杂度。通过实测数据分析了不同方案在逻辑门消耗、关键路径延迟和布线复杂度等方面的差异,为工程师提供了选型参考。重点探讨了74181芯片的16种算术逻辑运算能力及其在8位运算器中的应用实践。 阅读详情

跟着视频的写了一个数据统计的demo,实现按小时统计访问量。代码如下

package com.billy.test;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;

import java.util.*;

public class SparkTest {

    public static void main(String[] args) {
        SparkConf sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD");
        JavaSparkContext sc = new JavaSparkContext(sparkConf);
        JavaRDD<String> lines = sc.textFile("files/apache.log");

        //数据分片
        JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {

            @Override
            public Iterator<String> call(String s) throws Exception {
                return Arrays.asList(s.split(":")[1]).iterator();
            }
        });
        //数据转化为 对
        JavaPairRDD<String,Integer> wordsMap = words.mapToPair(new PairFunction<String, String, Integer>() {
            @Override
            public Tuple2<String, Integer> call(String s) throws Exception {
                return new Tuple2(s,1);
            }
        });
        //求和
        JavaPairRDD<String,Integer> wordsReduce = wordsMap.reduceByKey(new Function2<Integer, Integer, Integer>() {
            @Override
            public Integer call(Integer arg0, Integer arg1) throws Exception {
                return arg0 + arg1;
            }
        });
        //JavaPairRDD<String, Integer> sortByKey = wordsReduce.sortByKey(true);
        List<Tuple2<String, Integer>> collect = wordsReduce.collect();
        System.out.println("collect0: " + collect);

        //collect = new ArrayList(collect);
        System.out.println("collect1: " + collect);

        //System.out.println(sorted);
        Comparator<? super Tuple2<String, Integer>> myComparator = new Comparator<>() {
            @Override
            public int compare(Tuple2<String, Integer> t1, Tuple2<String, Integer> t2) {
                return t1._2.compareTo(t2._2);
            }
        };
        collect.sort(myComparator);
        System.out.println("collect2: " + collect);
    }
}

结果一直报Exception in thread “main” java.lang.UnsupportedOperationException错误,后来参考文章
https://blog.youkuaiyun.com/Tracycater/article/details/77592472?locationNum=2&fps=1
发现由数组转为List有一些坑,然后看rdd.collect()方法的源码发现果然collect返回的是一个array
在这里插入图片描述
因此也需要将collect得到的List转化一下,在上面的代码中,打开
collect = new ArrayList(collect);的注释,然后就不报错了。
打印结果:

collect0: [(06,366), (20,486), (19,493), (15,496), (00,361), (02,365), (04,355), (22,346), (17,484), (13,475), (11,459), (08,345), (14,498), (09,364), (21,453), (18,478), (16,473), (03,354), (07,357), (12,462), (05,371), (01,360), (10,443), (23,356)]
collect1: [(06,366), (20,486), (19,493), (15,496), (00,361), (02,365), (04,355), (22,346), (17,484), (13,475), (11,459), (08,345), (14,498), (09,364), (21,453), (18,478), (16,473), (03,354), (07,357), (12,462), (05,371), (01,360), (10,443), (23,356)]
collect2: [(08,345), (22,346), (03,354), (04,355), (23,356), (07,357), (01,360), (00,361), (09,364), (02,365), (06,366), (05,371), (10,443), (21,453), (11,459), (12,462), (16,473), (13,475), (18,478), (17,484), (20,486), (19,493), (15,496), (14,498)]

apache.log摘要如下:

83.149.9.216 - - 17/05/2015:10:05:03 +0000 GET /presentations/logstash-monitorama-2013/images/kibana-search.png
83.149.9.216 - - 17/05/2015:10:05:43 +0000 GET /presentations/logstash-monitorama-2013/images/kibana-dashboard3.png
83.149.9.216 - - 17/05/2015:10:05:47 +0000 GET /presentations/logstash-monitorama-2013/plugin/highlight/highlight.js
83.149.9.216 - - 17/05/2015:10:05:12 +0000 GET /presentations/logstash-monitorama-2013/plugin/zoom-js/zoom.js
83.149.9.216 - - 17/05/2015:10:05:07 +0000 GET /presentations/logstash-monitorama-2013/plugin/notes/notes.js
83.149.9.216 - - 17/05/2015:10:05:34 +0000 GET /presentations/logstash-monitorama-2013/images/sad-medic.png
83.149.9.216 - - 17/05/2015:10:05:57 +0000 GET /presentations/logstash-monitorama-2013/css/fonts/Roboto-Bold.ttf
83.149.9.216 - - 17/05/2015:10:05:50 +0000 GET /presentations/logstash-monitorama-2013/css/fonts/Roboto-Regular.ttf
83.149.9.216 - - 17/05/2015:10:05:24 +0000 GET /presentations/logstash-monitorama-2013/images/frontend-response-codes.png
83.149.9.216 - - 17/05/2015:10:05:50 +0000 GET /presentations/logstash-monitorama-2013/images/kibana-dashboard.png
83.149.9.216 - - 17/05/2015:10:05:46 +0000 GET /presentations/logstash-monitorama-2013/images/Dreamhost_logo.svg
83.149.9.216 - - 17/05/2015:10:05:11 +0000 GET /presentations/logstash-monitorama-2013/images/kibana-dashboard2.png
83.149.9.216 - - 17/05/2015:10:05:19 +0000 GET /presentations/logstash-monitorama-2013/images/apache-icon.gif
83.149.9.216 - - 17/05/2015:10:05:33 +0000 GET /presentations/logstash-monitorama-2013/images/nagios-sms5.png
83.149.9.216 - - 17/05/2015:10:05:00 +0000 GET /presentations/logstash-monitorama-2013/images/redis.png
83.149.9.216 - - 17/05/2015:10:05:25 +0000 GET /presentations/logstash-monitorama-2013/images/elasticsearch.png
83.149.9.216 - - 17/05/2015:10:05:59 +0000 GET /presentations/logstash-monitorama-2013/images/logstashbook.png
83.149.9.216 - - 17/05/2015:10:05:30 +0000 GET /presentations/logstash-monitorama-2013/images/github-contributions.png
83.149.9.216 - - 17/05/2015:10:05:53 +0000 GET /presentations/logstash-monitorama-2013/css/print/paper.css
83.149.9.216 - - 17/05/2015:10:05:24 +0000 GET /presentations/logstash-monitorama-2013/images/1983_delorean_dmc-12-pic-38289.jpeg
83.149.9.216 - - 17/05/2015:10:05:54 +0000 GET /presentations/logstash-monitorama-2013/images/simple-inputs-filters-outputs.jpg
83.149.9.216 - - 17/05/2015:10:05:33 +0000 GET /presentations/logstash-monitorama-2013/images/tiered-outputs-to-inputs.jpg
83.149.9.216 - - 17/05/2015:10:05:56 +0000 GET /favicon.ico
24.236.252.67 - - 17/05/2015:10:05:40 +0000 GET /favicon.ico
93.114.45.13 - - 17/05/2015:10:05:14 +0000 GET /articles/dynamic-dns-with-dhcp/
93.114.45.13 - - 17/05/2015:10:05:04 +0000 GET /reset.css
93.114.45.13 - - 17/05/2015:10:05:45 +0000 GET /style2.css
93.114.45.13 - - 17/05/2015:10:05:14 +0000 GET /favicon.ico
93.114.45.13 - - 17/05/2015:10:05:17 +0000 GET /images/jordan-80.png
93.114.45.13 - - 17/05/2015:10:05:21 +0000 GET /images/web/2009/banner.png
pyspark rdd对象调用Map 打印rdd对象.collect() 出现的错误 哪位大佬能帮忙解决下 求求大佬帮忙看下这个是什么问题 阅读详情

相关推荐

从SPI协议到文件系统:手把手教你用HAL库给W25Q16移植FATFS(附扇区管理优化方案)

本文详细介绍了如何在STM32平台上,通过HAL库的SPI接口为W25Q16 Flash芯片移植FATFS文件系统。文章从SPI通信基础讲起,深入解析了FATFS底层驱动(diskio.c)的移植要点,并重点探讨了针对W25Q16的4KB物理扇区特性进行扇区管理优化的两种方案,旨在帮助开发者构建稳定高效的文件存储方案。

happy2的博客 1044

解决R包biomaRt中的报错:Error in `collect()`:! Failed to collect lazy table.

如果报错,注意是看一下是不是哪个依赖包没有安装上,直接install.packages()安装上,再重复上面步骤即可。但是采用 更新 BiocManager 版本 的方法无法解决问题。点击 Browse 找到R包位置点开即可安装。(注意,不是dplyr)和。之间的不兼容导致的错误问题。点击 install。问题解决,不再报错了。

m0_57194506的博客 5640

数据库迁移策略实战:MySQL到PostgreSQL

数据库迁移是一项复杂且细致的任务,需要充分的准备工作、合适的迁移策略和严格的验证与优化步骤。通过选择合适的迁移工具、进行手动迁移和应用程序适配、以及迁移后的验证与优化,可以确保数据迁移的成功和业务的连续性。希望本文的分享能够为大家在MySQL到PostgreSQL的数据库迁移实战中提供一些有用的参考和启示。

shejizuopin的博客 1733

spark RDD collect()

collect的作用 Spark内有collect方法,是Action操作里边的一个算子,这个方法可以将RDD类型的数据转化为数组,同时会从远程集群是拉取数据到driver端。 已知的弊端 首先,collect是Action里边的,根据RDD的惰性机制,真正的计算发生在RDD的Action操作。那么,一次collect就会导致一次Shuffle,而一次Shuffle调度一次stage,然而一...

chaoshengmingyue的博客 2万+

JMeter脚本录制-快速上手篇

有的项目应用场景下,压测时,需要考虑带宽因素,压测不只是压测接口,静态资源也要一起压测。一般来说,静态资源比较多,如果一个个手工去写请求,是比较繁琐的,此时,可以使用Jmeter的脚本录制功能。 步骤1,创建脚本录制模版。 JMeter菜单:文件>模版,下拉选择到Recording,点击“Create”按钮; 填写录制参数: hostToRecord:填写要录制的主机域名,例如,我们这里填入:www.baidu.com schemeToRecord:填写要录制的模式,例如,htt...

软件测试大叔 5734

5G核心网NAS消息解析:从协议字段到实际抓包分析(附Wireshark示例)

本文深入解析5G核心网NAS消息的实战分析方法,从协议字段解读到实际Wireshark抓包诊断。通过详解扩展协议鉴别器、安全头类型、流程事务标识等核心字段,并结合注册流程故障排查实例,指导工程师快速定位NAS层问题,提升5G网络调试与协议分析效率。

grass的博客 532

【日常】PySpark包DataFrame相关处理小结

经过几日的不懈努力

梦想破三的奔三狗 1万+

深入解析:如何基于开源OpENer开发EtherNet/IP从站服务

通过OpENer开源库,开发者可以快速实现符合ODVA规范的EtherNet/IP从站设备,降低开发成本并提高系统灵活性。本文详细介绍了EtherNet/IP协议原理、OpENer库的特点与优缺点,以及二次开发的完整流程。通过遵循本文提供的指南,开发者可以成功构建出工业级的EtherNet/IP通信设备。

极地星辰 3014

RDD之collect方法执行的过程

首先来看一张图: spark集群中有master节点和Worker节点,master节点负责任务调度,worker节点负责计算。 当集群启动时,worker节点会向master注册,并且定期向master发送心跳。 当我们向集群提交任务时,会启动一个进程spark-submit,这个进程也叫做driver。这个进程先要连接master,然后master会通过注册信息找到合适的worker节点去计...

weixin_43866709的博客 3139

Abaqus 导出单元刚度矩阵和全局刚度矩阵

Abaqus 导出单元刚度矩阵和全局刚度矩阵

科技芯风 1万+

3、灵巧手的设计与构造

本文详细探讨了灵巧手的设计与构造,包括多指结构、关节和连杆设计、传感器集成以及分层控制架构等内容。同时,通过工业装配、医疗手术辅助和日常生活辅助等实际应用案例,展示了灵巧手的灵活性和适应性,并分析了当前设计面临的挑战及未来发展方向。

brandy的博客 496

RDD编程知识点总结

RDD创建 可以通过两种方式创建: * 第一种:读取一个外部数据集。比如,从本地文件加载数据集,或者从HDFS文件系统、HBase、Cassandra、Amazon S3等外部数据源中加载数据集。Spark可以支持文本文件、SequenceFile文件(Hadoop提供的 SequenceFile是一个由二进制序列化过的key/value的字节流组成的文本存储文件)和其他符合Hadoop...

u013841458的博客 1393

YOLOv8 Neck改进:BiFPN双向特征金字塔网络解析与实践

本文详细介绍了如何在YOLOv8中集成BiFPN双向特征金字塔网络,包括原理解析、代码实现、配置文件修改和性能分析。BiFPN通过双向特征融合和加权特征机制,显著提升了多尺度目标检测的性能。希望通过本文的讲解,大家能够深入理解BiFPN的工作原理,并成功将其应用到自己的目标检测项目中。如果你有任何问题或建议,欢迎在评论区留言讨论!在下一篇文章中,我们将探讨YOLOv8的其他改进技术,包括注意力机制、新的损失函数等,敬请期待!

QQ_778132974的博客 993

解决使用Pyspark进行读取HDFS上的文件时的报错

求人不如求己。无论学习还是生活,在遇到Bug和问题的时候,我们总是习惯的去寻找帮助,却少有静下心来,自己尝试去解决。比如,我写代码遇到问题总是第一时间百度,却少有去分析报错原因,只想着赶紧解决这个Bug。但今天来看,网上的文章几乎抄来抄去(当然高质量的文章仍然不少),不如自己去认真反思一下Bug或者问题的原因来一步步的去思考,去尝试,最终解决。独立解决问题的能力十分重要!学习不能一味一知半解。有时候,你可能会觉得你在课堂上或书本上学到的知识无法应用到实际项目中。

zh_19995的博客 1233

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

我作为Java后端,分享一下入门Spark编程的经历!

作者:陌北有棵树,玩Java,架构师社区合伙人!最近由于工作任务,需要掌握大数据技术栈的相关知识,于是开始了入门大数据的漫漫之路。相比传统Java后端的技术栈来说,大数据...

架构师小秘圈 1005

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

windows上pyspark glom()或map之后collect报错

pyspark报错

NICOLENICOLE_的博客 1248

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spark的RDD(弹性分布式数据集)返回大结果集

有时候确实需要返回很大的结果集,不能直接collect,会导致driver端内存不足。

Shion's bla bla blog 1431

2020-05-10

Spark Streaming 如何把DstreamRDD转换成List pyspark中的collect可以把RDD转换成List 所以,可以先把Spark Streaming中的Dstream转换成SparkRDD,再使用collect操作变成list。 1、使用foreachRDD将DstreamRDD转换成SparkRDD 2、SparkRDD 使用collect操作将RDD转换成list def transformList(rdd): a = Eddie.collect() pri

qq_45965109的博客 606

【Spark】RDD的序列化问题

发现问题 object serialDemo { def main(args: Array[String]): Unit = { val sparConf = new SparkConf().setMaster("local").setAppName("WordCount") val sc = new SparkContext(sparConf) val rdd: RDD[String] = sc.makeRDD(Array("hello world", "hello sp

克里斯的博客 2273

java rdd_JAVA RDD 介绍

RDD,全称Resilient Distributed Datasets(弹性分布式数据集),是Spark最为核心的概念,是Spark对数据的抽象。RDD是分布式的元素集合,每个RDD只支持读操作,且每个RDD都被分为多个分区存储到集群的不同节点上。除此之外,RDD还允许用户显示的指定数据存储到内存和磁盘中,掌握了RDD编程是SPARK开发的第一步。1:创建操作(creation operatio...

weixin_35948624的博客 2028

spark中RDD编程(java)

要实现自定义分区器,需要继承org.apache.spark.Partitioner类,并实现下面三个方法。(1)numPartitions: Int:返回创建出来的分区数。(2)getPartition(key: Any): Int:返回给定键的分区编号(0到numPartitions-1)。(3)equals():Java 判断相等性的标准方法。这个方法的实现非常重要,Spark需要用这个方法来检查你的分区器对象是否和其他分区器实例相同,这样Spark才可以判断两个RDD的分区方式是否相同。

sgs_sgs_sgs的博客 3469

sparkSQL:dataframe

DataFrame 的函数 Action 操作 1、 collect() ,返回值是一个数组,返回dataframe集合所有的行 2、 collectAsList() 返回值是一个java类型的数组,返回dataframe集合所有的行 3、 count() 返回一个number类型的,返回dataframe集合的行数 4、 describe(cols: String*) 返回一个通过数学计算的类表值

左手coding,右手cooking 5720

RDD.collect(),take(), first

RDD.take(), RDD.first() .collect() 方法把RDD的所有元素返回给驱动,驱动将其序列化成了一个列表 .take() 返回前几个元素

a8131357leo的博客 5788
上一篇: Hive -e时的双引号和反斜杠问题
下一篇: json.dumps遇到TypeError: Object of type date is not JSON serializable
IT-Billy
博客等级 码龄7年 9粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值