Spark Mllib里的分布式矩阵(行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵概念、构成)(图文详解)...

article/2025/9/19 19:43:02

 

 

 

  不多说,直接上干货!

 

 

Distributed  matrix : 分布式矩阵


  一般能采用分布式矩阵,说明这数据存储下来,量还是有一定的。
在Spark Mllib里,提供了四种分布式矩阵存储形式,均由支持长整形的行列数和双精度浮点型的数据内容组成。
  包括行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵依据你数据的不同的特点,你可以选择不同类型的数据


  

  (1)、行矩阵: 以行为基本方向的矩阵存储格式,列的作用相对较少。
      理解记忆,行矩阵是一个巨大的特征向量的集合  
      每一行就是一个具有相同格式的向量数据,且每一行的向量内容都可以单独取出来进行操作。
    要注意的是,此种矩阵不能按照行号访问。(我也不知道为什么这样

 





testRowMatrix.scala
复制代码
package zhouls.bigdata.chapter4import org.apache.spark._
import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.mllib.linalg.distributed.RowMatrixobject testRowMatrix {def main(args: Array[String]) {val conf = new SparkConf()                                       //创建环境变量.setMaster("local")                                               //设置本地化处理.setAppName("testRowMatrix")                                    //设定名称val sc = new SparkContext(conf)                                   //创建环境变量实例val rdd = sc.textFile("data/input/chapter4/RowMatrix.txt")                                     //创建RDD文件路径.map(_.split(' ')                                                //按“ ”分割.map(_.toDouble))                                             //转成Double类型.map(line => Vectors.dense(line))                                //转成Vector格式val rm = new RowMatrix(rdd)                                      //读入行矩阵println(rm.numRows())                                           //打印列数println(rm.numCols())                                            //打印行数}
}
复制代码

 

  这里,我带你是的
RowMatrix要从RDD[Vector]构造,m是mat的行数,n是mat的列。

 



 

 

 

 

 

 

 

 

 (2)  带有行索引的矩阵
    单纯的行矩阵对其内容无法进行直接显示,当然可以通过调用其方法显示内部数据内推。即通过带有行索引的行矩阵。
  IndexedRowMatrix矩阵和RowMatrix矩阵的不同之处在于,你可以通过索引值来访问每一行。其他的,没啥区别。
  

 



testIndexedRowMatrix.scala
复制代码
package zhouls.bigdata.chapter4import org.apache.spark._
import org.apache.spark.mllib.linalg.distributed.{IndexedRow, RowMatrix, IndexedRowMatrix}
import org.apache.spark.mllib.linalg.{Vector, Vectors}object testIndexedRowMatrix {def main(args: Array[String]) {val conf = new SparkConf()                                       //创建环境变量.setMaster("local")                                               //设置本地化处理.setAppName("testIndexedRowMatrix")                          //设定名称val sc = new SparkContext(conf)        //创建环境变量实例val rdd = sc.textFile("data/input/chapter4/loadLibSVMFile.txt")                                     //创建RDD文件路径.map(_.split(' ')                                                //按“ ”分割.map(_.toDouble))                                             //转成Double类型.map(line => Vectors.dense(line))                               //转化成向量存储.map((vd) => new IndexedRow(vd.size,vd))                      //转化格式val irm = new IndexedRowMatrix(rdd)                             //建立索引行矩阵实例println(irm.getClass)                                            //打印类型println(irm.rows.foreach(println))                                 //打印内容数据}
}
复制代码

 

  打印结果是
  
class  org.apache.spark.mllib.linalg.distributed.IndexedRowMatrix
IndexedRow(3,[1.0,2.0,3.0])
IndexedRow(3,[4.0,5.0,6.0])

 

  注意:IndexedRowMatrix除了这个带有行索引的行矩阵功能外,还有其他功能,如:
      toRowMatrix将其转化成单纯的行矩阵,toCoordinateMatrix将其转化成坐标矩阵,toBlockMatrix将其转化成块矩阵。








(3) 坐标矩阵
    是一种带有坐标标记的矩阵。
  坐标矩阵一般用于数据比较多且数据较为分散的情形,即矩阵中含0或者某个具体值较多的情况下
  当你的数据特别稀疏的时候怎么办?采用这种坐标矩阵吧。
  CoordinateMatrix矩阵中的存储形式是(row,col,value),就是原始的最稀疏的方式,所以如果矩阵比较稠密,别用这种数据格式。
  其中的每一个具体数据都有一组坐标进行标示。其类型格式如下:
(x: Long  ,  y:Long  , value:Double)

  x和y分别代表标示坐标的坐标轴标号,value是具体内容。x是行坐标,y是列坐标。




 



testCoordinateRowMatrix.scala
复制代码
package zhouls.bigdata.chapter4import org.apache.spark._
import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, MatrixEntry}object testCoordinateRowMatrix {def main(args: Array[String]) {val conf = new SparkConf()                                       //创建环境变量.setMaster("local")                                               //设置本地化处理.setAppName("testCoordinateRowMatrix")                          //设定名称val sc = new SparkContext(conf)                                  //创建环境变量实例val rdd = sc.textFile("data/input/chapter4/loadLibSVMFile.txt")                                     //创建RDD文件路径.map(_.split(' ')                                                //按“ ”分割.map(_.toDouble))                                             //转成Double类型.map(vue => (vue(0).toLong,vue(1).toLong,vue(2)))                //转化成坐标格式.map(vue2 => new MatrixEntry(vue2 _1,vue2 _2,vue2 _3))         //转化成坐标矩阵格式val crm = new CoordinateMatrix(rdd)                              //实例化坐标矩阵println(crm.entries.foreach(println))                                //打印数据}
}
复制代码

 

 


   运行结果是,
MatrixEntry(1,2,3.0)
MatrixEntry(4,5,6.0)
 

 


http://chatgpt.dhexx.cn/article/uDq9g1k8.shtml

相关文章

Shiro权限管理详解(授权和注解开发)【面试点】

Shiro权限管理详解 1. 权限管理1.1什么是权限管理1.2用户身份认证1.2.1 概念1.2.2 用户名密码身份认证流程1.2.3 关键对象 1.3 授权1.3.1 概念 1.3.2 授权流程1.3.3 关键对象1.3.4 权限模型1.3.5 权限分配1.3.6 权限控制1.3.6.1 基于角色的访问控制 1. 权限管理 1.1什么是权限…

Shiro权限管理之自定义Realm

文章目录 1. SpringBoot集成shiro快速入门1. shiro 用户认证2. shiro用户授权 2. SpringBoot 使用IniRealm进行认证授权3. Spring Boot 使用 JdbcRealm 进行认证授权1. 数据库驱动2. 数据库表结构3. 创建 testJdbcRealm方法4. 更改数据库表名 4. Spring Boot 使用自定义 Realm …

权限管理框架Shiro简介

Shiro 1、shiro简介 shiro是一个强大易用的java安全框架,可以帮助我们完成:身份认证、授权、加密、会话管理、与web集成、缓存等。 包括了三个核心组件:Subject、SecurityManage和Realm 外部架构 内部架构 authentication(认证…

Java shiro权限管理框架视频教程

shiro权限管理框架视频教程 中级 共14课 权限系统在任何一个系统中都存在,随着分布式系统的大行其道,权限系统也趋向服务化,对于一个高级工程师来说,权限系统的设计是必不可少需要掌握的技术栈。 课程简介 权限系统在任何一个…

【Shiro权限管理】一、简介

一、简介 Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等。 官网地址&#xf…

SSM集成shiro权限管理

这几天在学习了shiro权限管理框架,在刚开始的时候学的时候因为这个配置问题困扰了我很长时间,所以在这篇文章我整合了自己用SSM搭建shiro权限框架的过程。 1.配置 1.1jar包 在项目配置开始前需要先导入shiro的相关jar包,下载地址&#xff1a…

shiro权限管理的应用

shiro权限管理的应用 官网:http://shiro.apache.org 一, 什么是权限管理: 对系统中的资源进行权限配置 , 对资源的一种保护 ; 一般需要进过两个步骤: 身份认证- 授权 - 资源访问; 1.1 身份认证&…

shiro权限管理框架简介(一)

一:什么是shiro? shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。 spring中有spring security (原名Acegi),是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。 s…

shiro权限管理框架学习

一、权限框架简介 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户身份认证和授权两…

shiro权限管理的配置

建立一个权限管理配置类,在类上添加注解Configuration,如下: 1、设置安全管理 Bean public DefaultWebSecurityManager securityManager(CookieRememberMeManager rememberMeManager, CacheManager cacheShiroManager, SessionManager sessio…

Shiro 权限管理入门之认证与授权

Shiro 权限管理什么是权限管理?什么是身份认证?什么是授权? Shiro 是什么?Shiro 的核心架构Shiro 中的认证认证关键对象认证流程认证的开发自定义 RealmSimpleAccountRealm开发自定义 Realm MD5 和 Salt自定义 md5 salt 的 Realm 并验证 Sh…

Shiro权限管理详解

1权限管理1.1什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理包括用户身份…

Shiro权限控制

目录 认识Shiro的整体架构,各组件的概念简介Shiro与Spring Security比较Shiro整体架构 Shiro认证,授权的过程shiro认证Shiro授权 Shiro自定义的Realm,FilterIniRealm配置文件JdbcRealm自定义Realmshiro加密 Shiro Session管理Shiro 缓存管理S…

Shiro权限管理框架详解

1 权限管理1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理包括用户身份认证和授权两部分,简称认证授权…

Shiro 权限管理

一共5个表 用户表角色表权限表用户角色中间表角色权限中间表 权限验证 用户不跟权限直接关联, 可以给用户多个角色, 每个角色都有对应的权限,所以给用户加一个角色,就相当于,给用户赋了对应的权限。一个用户可以有多…

Shiro: 权限管理

一、权限管理 1、什么是权限管理 权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问且只能访问自己被授权的资源。   权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要…

【权限管理框架】一文看懂Shiro权限管理框架!

文章目录 1.JavaWeb中的权限控制2.权限框架核心知识ACL和RBAC2.1.ACL和RBAC简介2.2主流权限框架介绍 3.Shiro架构和基本概念3.1.Shiro的4大核心模块3.2.Shiro权限控制运行流程 4.Shiro简单API案例4.1.项目搭建所需依赖4.2.Shiro认证简单实操4.3.Shiro授权简单实操 5.安全数据来…

【端口扫描工具】nmap核心使用方法

目录 nmap的基础使用: 1.1、常用命令参数: 命令格式: 主机发现: 扫描 扫描速度 扫描端口 1.2、基本扫描 1.3、自定义端口扫描 1.4、Ping扫描 1.5、路由追踪 1.6、扫描网段,C段 1.7、操作系统类型的探测 1.8、nmap万能…

【安全工具】Nmap基本使用方法

Nmap工具介绍 Nmap是一款开放源代码的网络探测和安全审核工具,它被设计用来快速扫描大型网络、包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹、WAF识别及常见安全漏洞。 它的图形化界面是 Zenmap、分布式框架为 Dnmap Nmap功能 主机探测&#xf…

nmap工具使用方法

nmap工具使用方法 简介 Nmap&#xff08;网络映射器&#xff09;是一个用于网络探索和安全审计的开源工具 常用扫描端口命令 <nmap -sV 192.168.204.64> -sV&#xff1a;探测端口服务版本<nmap -T4 -A -v 192.168.204.64> -T4&#xff1a; 指定扫描过程使用的时…