Spark常用API<Scala>

2023-05-16

  • 概览
    • 1.转换
    •  2.动作
  • 1.Transformation
    • 1.1一个RDD进行转换操作
    • 1.2 两个RDD的转换操作
    • 1.3对一个Pair RDD进行转化操作
    • 1.4对两个PairRDD进行转换操作
  • 2.Action
    • 2.1对一个RDD进行行动操作
    • 2.2Pair RDD行动操作

 

概览

这里只有 Scala 的API,Java 与 Python 请看官方API。

1.转换

Transformation

概念翻译

map(func)返回每个元素经过 func 方法处理后,所生成的新元素所组成的分布式数据集合(RDD)。
filter(func)返回一个通过了方法 func 筛选的元素所组成的数据集合;func 返回 true,即代表通过筛选。
flatMap(func)与 map 相似,不过每一个输入项能够被映射为0个或多个输出项(所以 func 应该返回一个Seq(队列) 而不是一个单项)。
mapPartitions(func)与 map 相似,但是他是单独运行在 RDD 的每一个分区(块)上,所以假如 RDD 是类型 T 时,则 func 的类型必须为 Iterator<T> => Iterator<U> 。
mapPartitionsWithIndex(func)与 mapPartitions 相似,但是会另外提供一个整数值代表分区的下标(index), 所以假如 RDD 是类型 T 时,func 的类型必须为 (Int, Iterator<T>) => Iterator<U>.
sample(withReplacement, fraction, seed)第一参数是指明是否放回,第二个参数是抽取数量,第三个是随机种子。
union(otherDataset)返回一个包含了源数据集和参数的新数据集
intersection(otherDataset)返回一个元数据集与参数的相交之后的新的 RDD(就是交集)。
distinct([numTasks])对数据集进行去重操作
groupByKey([numTasks])当在一个(K,V)数据集上调用他,会返回一个 (K, Iterator<V>) 数据集。 注意 :当你分组他们是为了在每个Key上聚合他们(比如求和或者平均值),使用 reduceByKey 或者 aggregateByKey 将会收益到更高的性能。注意 :输出的并发水平依赖于父 RDD 分区的个数。你能通过可选的 numTasks 参数设置不同的 task 数目。
reduceByKey(func, [numTasks])当在一个(K,V)数据集上调用他时,将会返回一个在不同的key上进行了聚合了Value的新的 (K,V) 数据集,聚合的方式是使用 func 方法指定,且必须是 (V,V) => V 类型的。 与 groupByKey 很像,reduce task 的个数是使用第二个可选参数指定的。
aggregateByKey(zeroValue)(seqOp, combOp, [NumTasks])当在一个(K,V)类型的数据集上调用他时,他就会返回一个按照 key 来进行聚合后生成的 (K,U) 对,聚合的方式是通过提供一个合并方法和一个中立的“零”值来完成的。允许被聚合的 value 的类型与输入的 value 的类型不一样,这样可以禁止没必要的分配。和 groupByKey相似,reduce task 的个数是使用第二个可选参数指定的。
sortByKey([ascending],[numTasks])在(K,V)类型上调用他以实现按 K 排序。返回排序后的键值对。使用第一参数(boolean)值来决定是否为升序。
join(otherDataset, [numTasks])通过该方法可以按照 K 来将源数据集合与另一数据集合进行 join 操作。(K, V) 和 (K, W) join结果就是 (K,(V,W))。outer join 就直接使用 leftOuterJoin,rightOuterJoin,fullOuterJoin 。
cogroup(otherDataset,[numTasks])当在 (K, V) 类型与 (K, W)类型调用该方法时,会返回一个元祖 (K, (Iterable<V>, Iterable<W>)) 。也可以使用 groupWith 来调用。
cartesian(otherDataset)当在 T 类型与 U类型 的数据集上调用他,就返回一个 (T,U) 类型的数据集(所有元素组成的键值对)。
pipe(command,[envVars])通过 shell 命令将 RDD 的每个分区进行导流, RDD 元素就可以写入到进程的 stdin(标准输入) ,也可以按照字符串的形式将其来按行输出的 stdout(标准输入)
repatition(numPartitions)通过重新修改 partition 的个数来对 RDD 中的数据重新进行洗牌,以平衡分区。他总是对网络上的所有数据进行重洗。

 2.动作

Action

用法

reduce(func)使用一个 func 来聚合一个数据集,方法应该为两个参数,一个返回值。这个方法必须能够翻转与连接,以至于能够在并发运行时的计算是正确的。
collect()以数组的形式返回在驱动器上的数据集的所有元素。当一个过滤器或者其他操作返回了一个小的子集时,使用这个方法会变得非常高效。
first()返回数据集行的第一个元素。
take(n)以数组的形式返回数据集上的前 n 个元素。
takeSample(withReplacement, num, [seed])返回抽样后的数据组成的数组,第一个参数是时候放回取样,第二个就是取样的个数,第三个可选的参数是取样种子。
takeOrdered(n, [ordering])返回 RDD 排序后的前 n 个元素。排序方式要么就使用原生的排序方式,要么使用自定义的比较器排序,使用第二个可选参数传入。
saveAsTextFile(path)将数据集中的元素写成一个文本文件,或者多个文本问价,参数就是文件路径,可以写在本地文件系统,HDFS,或者其他 Hadoop 支持的文件系统中。Spark 会在每一个元素上调用 toString 方法,转成文本文件中的一行文本。
saveAsSequenceFile(path) --Java and Scala就是将 RDD 中的元素写成 Hadoop SequenceFile到本地文件系统,HDFS,或者其他 Hadoop 支持的文件系统。 且 RDDs 中可用的的键值对必须实现 Hadoop 的 Writable 接口。在 Scala 中,也有许多可用的能够隐含的转型为 Writable 的类型,例如 Int, Double, String。
savaAsObjectFile(path) --Java and Scala使用 Java 简单的序列化方式,将 RDD 中的元素进行序列化。 可以使用 SparkContext.objectFile() 方法来加载。
countByKey()按照 数据集中的 Key 进行分组,计算各个 K 的对应的个数。(K,V)返回 (K,Int)
foreach(func)在数据集上的每个元素上运行 func 方法。上面提到了。

1.Transformation

主要做的是就是将一个已有的RDD生成另外一个RDD。Transformation具有lazy特性(延迟加载)。Transformation算子的代码不会真正被执行。只有当我们的程序里面遇到一个action算子的时候,代码才会真正的被执行对

1.1一个RDD进行转换操作

函数名

描述

filter()返回一个由通过传给filter()的函数的元素组成的RDD
flatMap()将函数应用于RDD的每个元素,将返回的迭代器的所有内容构成新的RDD
map()将函数应用于RDD中的每个元素,将返回值构成新的RDD
distinct()去重
sample(withReplacement,<br />fraction, [seed])对RDD进行采样,以及是否替换

举例:对一个数组为{1, 2, 3, 3}的RDD进行基本的RDD转化操作

函数名

含义

示例

结果

map(func)返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成rdd.map(x => x + 1){2, 3, 4, 4}
flatMap()将函数应用于RDD 中的每个元素,将返回的迭代器的所有内容构成新的RDD。通常用来切分单词rdd.flatMap(x => x.to(3)){1, 2, 3, 2, 3, 3, 3}

parallelize()  
使用已经存在的迭代器或者集合通过调用spark驱动程序提供的parallelize函数来创建并行集合

JavaRDD<String> rdd = jsc.parallelize(Arrays.asList("haimie","jojo"));  
 
filter()返回一个由通过传给filter()的函数的元素组成的RDDrdd.filter(x->x!=1){2,3,3,}
distinct()去重rdd.distinct(){1,2,3}
sample(s,faraction,[seed])对RDD采样,以及是否替换rdd.sample(false,0.5)非确定的

1.2 两个RDD的转换操作

对数据分别为{1, 2, 3}和{3, 4, 5}的RDD进行针对两个RDD的转化操作

函数名含义示例结果
union()生成一个包含两个RDD中所有元素的RDDrdd.unino(other){1,2,3,3,4,5}
intersection()求两个RDD共同的元素的RDDrdd.intersection(other){3}
substract()移除一个RDD中的内容rdd.subtract(other){1,2}
cartesian()与另一个RDD的笛卡尔积rdd.cartesian(other){(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),(3,3),(3,4).(3,5)}

1.3对一个Pair RDD进行转化操作

val pairRDD = sc.parallelize(List((1, 2), (3, 4), (3, 6)))

val pairRDD1 = sc.parallelize(List((3, 5)))

函数名

描述

示例

结果

reduceByKey(func)合并具有相同键的值val rdd6 = pairRDD.reduceByKey((x, y) => x + y)Array((1,2), (3,10))
groupByKey()对具有相同键的值进行分组pairRDD.groupByKey()Array((1,CompactBuffer(2)), (3,CompactBuffer(4, 6)))
combineByKey()使用不同的返回类型合并具有相同键的值pairRDD.combineByKey( (v) => (v, 1), (acc: (Int, Int), v) => (acc._1 + v, acc._2 + 1), (acc1: (Int, Int), acc2: (Int, Int)) => (acc1._1 + acc2._1, acc1._2 + acc2._2) )Array((1,(2,1)), (3,(10,2)))
mapValues(func)原RDD中的Key保持不变,与新的Value一起组成新的RDD中的元素。因此,该函数只适用于元素为KV对的RDD。

val a = sc.parallelize(List("dog", "tiger", "lion", "cat", "panther", " eagle"), 2)

val b = a.map(x => (x.length, x))

b.mapValues("x" + _ + "x").collect

//"x" + _ + "x"等同于everyInput =>"x" + everyInput + "x"

Array( (3,xdogx), (5,xtigerx), (4,xlionx), (3,xcatx), (7,xpantherx), (5,xeaglex) )
flatMapValues(func)

对Pair RDD中的每个值应用一个返回迭代器的函数,

然后对返回的每个元素都生辰给一个对应原键的键值对记录

val a = sc.parallelize(List((1,2),(3,4),(5,6))) val b = a.flatMapValues(x=>1 to x) b.collect.foreach(println(_))(1,1) (1,2) (3,1) (3,2) (3,3) (3,4) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6)
keys()返回一个仅包含键的RDDpairRDD.keysArray(1, 3, 3)
values()返回一个仅包含值的RDDpairRDD.ValuesArray(2, 4, 6)
sortByKey()返回一个根据键排序的RDDpairRDD.sortByKey()Array((1,2), (3,4), (3,6))

https://yq.aliyun.com/articles/674009

mapValues 

map

val a = sc.parallelize(1 to 93)

val b = a.map(x => x*2)//x => x*2是一个函数,x是传入参数即RDD的每个元素,x*2是返回值

a.collect

//结果Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

b.collect

//结果Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18)

通过map把数据变成k-v

val a = sc.parallelize(List("dog""tiger""lion""cat""panther"" eagle"), 2)

val b = a.map(x => (x, 1))

b.collect.foreach(println(_))

/*

(dog,1)

(tiger,1)

(lion,1)

(cat,1)

(panther,1)

( eagle,1)

 

1.4对两个PairRDD进行转换操作

函数

描述

示例

结果

subtractByKey删除RDD中键与other中的键相同的元素pairRDD.subtract(pairRDD1)Array((3,6), (3,4), (1,2))
join对两个rdd进行内连接  
rightOuterJoin对两个RDD进行连接操作,确保第一个RDD的键必须存在  
leftOuterJoin对两个RDD进行连接操作,确保第二个RDD的键必须存在  
cogroup将两个RDD中拥有相同键的数据分组到一起  

 折叠源码

// join: 对两个RDD进行内连接

var rdd13 = pairRDD.join(pairRDD1)

 

// rightOuterJoin: 对两个RDD进行连接操作,确保第一个RDD的键必须存在

var rdd14 = pairRDD.rightOuterJoin(pairRDD1)

 

// leftOuterJoin: 对两个RDD进行连接操作,确保第二个RDD的键必须存在

var rdd15 = pairRDD.leftOuterJoin(pairRDD1)

 

// cogroup: 将两个RDD中拥有相同键的数据分组到一起

var rdd16 = pairRDD.cogroup(pairRDD1)

 

结果

 

scala> rdd13.collect

res32: Array[(Int, (Int, Int))] = Array((3,(4,5)), (3,(6,5)))

 

scala> rdd14.collect

res33: Array[(Int, (Option[Int], Int))] = Array((3,(Some(4),5)), (3,(Some(6),5)))

 

scala> rdd15.collect

res34: Array[(Int, (Int, Option[Int]))] = Array((1,(2,None)), (3,(4,Some(5))), (3,(6,Some(5))))

 

scala> rdd16.collect

res35: Array[(Int, (Iterable[Int], Iterable[Int]))] = Array((1,(CompactBuffer(2),CompactBuffer())), (3,(CompactBuffer(46),CompactBuffer(5))))

 

2.Action

2.1对一个RDD进行行动操作

函数名

描述

collect()返回RDD中的所有元素
count()返回RDD中的元素个数
countByValue()各元素在RDD中出现的次数
take(num)从RDD中返回num个元素
top(num)从RDD中返回最前面的num个元素
takeOrdered(num)(ordering)从RDD中按照顺序返回最前面的num个元素
takeSample(withReplacement,<br /> num, [seed])从RDD中返回任意一些元素
reduce(func)并行整合RDD中所有数据
flod(zero)(func)和reduce一样,但是需要提供初始值
aggregate(zeroValue)(seqOp, comOp)和reduce一样,但是通常返回不同类型的函数
foreach(func)对RDD中的每个元素使用给定的函数

举例

val rdd = sc.parallelize(List(1233))

 

// collect:返回RDD中的所有元素

rdd.collect()

 

// count:返回RDD中的元素个数

rdd.count()

 

// countByValue:返回个元素在RDD中出现的次数

rdd.countByValue()

 

// take:从RDD中返回2个元素

rdd.take(2)

 

// top:从RDD中返回最前面的2个元素

val x = rdd.top(2)

 

// takeOrdered:从RDD中按照提供的顺序返回最前面的2个元素

rdd.takeOrdered(2)

 

object Ord extends Ordering[Int] {

    override def compare(x: Int, y: Int): Int = {

        if (x < y) 1 else -1;

    }

}

val pa = sc.parallelize(Array(123456))

pa.takeOrdered(3)(Ord)

 

// foreach(func):对RDD中的每个元素使用给定的函数

rdd.foreach(println)

 

结果:

 

scala> val rdd = sc.parallelize(List(1233))

rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[37] at parallelize at <console>:24

 

scala> rdd.collect()

res18: Array[Int] = Array(1233)

 

scala> rdd.count()

res19: Long = 4

 

scala> rdd.countByValue()

res20: scala.collection.Map[Int,Long] = Map(1 -> 12 -> 13 -> 2)

 

scala> rdd.take(2)

res21: Array[Int] = Array(12)

 

scala> val x = rdd.top(2)

x: Array[Int] = Array(33)

 

scala> rdd.takeOrdered(2)

res22: Array[Int] = Array(12)

 

scala> object Ord extends Ordering[Int] {

     |     override def compare(x: Int, y: Int): Int = {

     |         if (x < y) 1 else -1;

     |     }

     | }

defined object Ord

 

scala> val pa = sc.parallelize(Array(123456))

pa: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[43] at parallelize at <console>:24

 

scala> pa.takeOrdered(3)(Ord)

res23: Array[Int] = Array(654)

 

scala> rdd.foreach(println)

2

1

3

3

2.2Pair RDD行动操作

函数名

描述

countByKey()对每个键对应的元素分别计数
collectAsMap()将结果以映射表的形式返回,以便查询
lookup(key)返回给定键对应的所有值

// countByValue: 对每个键对应的元素分别计数

pairRDD.countByValue()

 

// collectAsMap: 将结果以映射表的形式返回,以便查询

pairRDD.collectAsMap()

 

// lookup: 返回指定键对应的所有值

pairRDD.lookup(3)

 

scala> pairRDD.countByValue()

res36: scala.collection.Map[(Int, Int),Long] = Map((3,6) -> 1, (3,4) -> 1, (1,2) -> 1)

 

scala> pairRDD.collectAsMap()

res37: scala.collection.Map[Int,Int] = Map(1 -> 23 -> 6)

 

scala> pairRDD.lookup(3)

res38: Seq[Int] = WrappedArray(46)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark常用API<Scala> 的相关文章

  • Scala案例类使用浅拷贝还是深拷贝?

    case class Person var firstname String lastname String val p1 Person amit shah val p2 p1 copy p1 firstname raghu p1 p2 p
  • 如何使用 *non-case* 类通过 Scala 从 JSON 反序列化?

    我正在编写一个 Scala 应用程序 需要序列化和反序列化 JSON 某些 JSON 对象具有超过 22 个字段 因此我无法使用案例类 并且也无法更改格式 我找到的所有 Scala JSON 库都只能 轻松地 与案例类一起使用 而不是与普通
  • 在“GROUP BY”子句中重用选择表达式的结果?

    在 MySQL 中 我可以有这样的查询 select cast from unixtime t time Y m d H 00 as datetime as timeHour from some table t group by timeH
  • Scala 中的模式匹配是如何在字节码级别实现的?

    Scala 中的模式匹配是如何在字节码级别实现的 是不是像一系列if x instanceof Foo 构造 还是其他什么 它对性能有何影响 例如 给出以下代码 来自Scala 示例 http www scala lang org docu
  • Scala:不变性和路径依赖的类型兼容性

    我围绕这个主题提出了一些问题 但这次我想让它成为一个更一般性的讨论 因为在我看来 Scala 缺少一些非常重要的块 考虑以下代码 从我的真实项目中简化 trait World type State lt StateIntf def evol
  • SBT - 使用汇编时多项目合并策略和构建 sbt 结构

    我有一个由多个较小项目组成的项目 其中一些项目相互依赖 例如 有一个依赖于 commons 项目的实用程序项目 其他项目可能依赖于公用事业或公共设施 也可能不依赖于两者 在 build sbt 中 我在文件末尾有程序集合并策略 以及程序集中
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • 带有泛型参数的抽象类的 JsonFormat

    我正在尝试为具有通用参数的抽象类编写 JsonFormat 如下所示 abstract class Animal A def data A def otherStuff String stuff case class CatData cat
  • 将括号子集映射到字符

    我正在尝试创建一个 Scala 方法 该方法将采用一个父括号组 表示为字符串 然后将每个括号子组映射到不同的字母 然后它应该将它们放入它返回的映射中 所以基本上我调用以下方法 如下所示 val s 2 x 3 6 val map mapPa
  • 这是一种在 Akka FSM 中内部监视到第一个状态的转换的方法吗?

    考虑从状态 Idle 开始的 FSM actor startWith Idle IdleData 我想监视到第一个状态的转换 从无状态 I tried onTransition case gt Idle gt Wasn t called 根
  • Skype API 的实现[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的 Skype 插件 https stackoverflow com questions 1149615 skype addon in c sharp 如何在 C 中实现 Skype API 来
  • 如何使用 Visual C++ 在 win32 API 中创建圆形/圆形按钮

    我有一个 Visual C 中的 Window Win32 API 应用程序 我没有使用MFC 我必须创建一个带有位图图像的圆形 圆形按钮 我的应用程序有一个皮肤视图 任何人都可以帮助我完成这项任务吗 按钮是窗口 您可以使用 CreateW
  • 如何用java制作字典? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试用java制作一个离线词典
  • 为什么这个 Clojure 程序在可变数组上运行如此慢?

    剧透警告 这是 代码降临 第六天的第一部分 我试图解决this http adventofcode com day 6Clojure 和 Scala 中的问题 Scala 程序在我的 Macbook Air 上运行良好 几秒钟内就完成了 然
  • 如何在 Scala 中使用 Circe 解码 JSON 列表/数组

    我有代码片段 cursor downField params downField playlist downField items as List Clip 其中 Clip 是字符串和数字的简单 case 类 传入的 Json 应包含一个
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept
  • 在 Scala 中使用隐式的良好实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何客观原因在代码中到处使用隐式参数只是为了缩短应传递的参数数量 我有一个 REST API 端点的每个调用都有一个唯一的 ID 应该在调
  • 如何使用 Scala 2.11 和 sbt 0.13 运行 Cucumber?

    有人有使用 sbt 0 13 和 Scala 2 11 的 Cucumber 项目的示例吗 我需要两者吗cucumber scala 2 11和sbt cucumber plugin 0 8 0 该插件是最新的吗 插件现在去哪里了 哪里做
  • 使用 Either 处理 Scala 代码中的故障

    Optionmonad 是 Scala 中处理有或无事物的一种很好的表达方式 但是 如果在 什么也没发生 时需要记录一条消息怎么办 根据 Scala API 文档 Either 类型通常用作 scala Option where Left
  • 乔达时间:将 UTC 转换为本地时间

    我想将 Joda Time UTC DateTime 对象转换为本地时间 这是一种看似有效的费力方法 但一定有更好的方法 这是没有周围声明的代码 在 Scala 中 val dtUTC new DateTime 2010 10 28T04

随机推荐

  • windows server 2012r2 开启远程桌面各种问题汇总

    Windows server 2012r2开启远程桌面比较麻烦 xff0c 因为毕竟是服务器 xff0c 更注重安全性 问题一 xff1a 如下图所示 xff0c 未开启相关权限 解决问题一 xff1a 先进行系统高级设置 xff0c 允许
  • java多线程入门例子-第一例

    认识多线程 1 span class hljs keyword public span span class hljs class span class hljs keyword class span span class hljs tit
  • npm无法使用npm版本过低无法升级npm版本与node版本不匹配npm WARN npm npm does not support Node.js vx.x.x

    npm WARN npm npm does not support Node js vx x x npm WARN npm You should probably upgrade to a newer version of node as
  • python 微信自动回复机器人

    python 微信自动回复机器人 导入wxauto https github com cluic wxauto span class token comment python3 span span class token comment c
  • 一篇文章讲清楚Gradle与Gradle Wrapper的区别

    Gradle xff1a android用来构建项目的编程框架 这个玩意对于使用AS开发的 xff0c 大家都清楚 xff0c 用这个来构建项目变得无比轻松和高可定制性 xff0c 比如引入第三方依赖 xff0c 发布到maven库 xff
  • 【Linux】运行yum时报错ModuleNotFoundError: No module named ‘dnf‘

    根因 xff1a 当前使用的python环境下没有yum依赖的dnf等包 解决方案 xff1a 确认当前使用的python环境下是否没有dnf包 xff1a 查看当前使用的python版本 xff0c 以及位置 xff1a 在site pa
  • POI导入Excel,获取公式的值

    直接POI导入Excel中的数据的时候 xff0c 直接获取表中的值 xff0c 如果表中单元格的值时由公式计算得出的话 xff0c 获取到的会是公式 所以需要对获取的单元格的值进行处理 xff1a 导入数字时 导入公式的计算结果而非公式
  • navicate连接远程数据库

    远程主机的3306端口一般是不允许外网直接访问的 xff0c 但是开发过程中 xff0c 使用navicate工具进行数据库操作会方便超级多 xff0c 那么要怎么配置navicate连接远程数据库呢 超简单两步走 xff1a 1 使用se
  • idea中Gradle项目控制台中文乱码

    我使用的是IEDA2021 xff0c 之前跑maven项目一切正常 今天导入了一个Gradle项目 xff0c debug的时候控制台中文乱码了 之前直接用idea控制台中文乱码做关键词搜索 xff0c 改了file settings e
  • @RequestMapping value值置为““

    我们通常用 64 RequestMapping来映射请求 xff0c 比如 xff0c 写一个方法 xff1a span class token annotation punctuation 64 RequestMapping span s
  • 三十分钟做一个网页游戏

    本文目的是短时间之内 xff0c 通过做出一个简单的缘分对对碰游戏 xff0c 了解网页的基本要素 之前没有接触过网页开发 xff0c 这次算是个入门了 对于大部分网页 xff0c 都要包括HTML CSS JavaScript三种技术 而
  • 软件安装时窗口出现在屏幕左上角而且拖不出来

    今天在安装MYSQL是出现如下问题 xff1a 安装助手出现在屏幕左上角而且拖不出来 xff0c 导致安装没办法完成 用一个很简单的方法解决了问题 xff1a 桌面空白处右键 xff0c 点屏幕分辨率 把方向改成纵向 xff0c 左上角的窗
  • DELL笔记本插入耳机没反应

    新入的戴尔燃7000 xff0c 上午因为CPU占用飙升 xff0c 关掉了笔记本上的几个自启动项 xff0c 下午插入耳机就无响应了 xff0c 耳机插进去 xff0c 还是外放 百度原因 xff0c 很多都提及了Realtek这一声卡驱
  • the server responded with a status of 404 (Not Found)

    使用ajax跳转方法时 xff0c 页面ctrl 43 shift 43 i调试报告了一个404错误 xff0c 说找不到方法 页面地址栏直接指向方法的地址跳转也是404 目标方法是新增的 xff0c 于是使用复制黏贴 xff0c 确定各处
  • select设置只读

    根据需求 xff0c 需要根据后台传来的参数 xff0c 动态设置select标签是否可以选择 xff0c 因此 xff0c 当判断某个select应当设为只读时 xff0c 使用 span class hljs variable span
  • java:程序包XXXX不存在

    使用idea导入maven项目 xff0c 编译时报错 xff1a java 程序包XXXX不存在 如图 xff1a 百度到的诸如右键libraries所在文件夹 xff0c 选择add to libraries 等方法没有作用 后来去查看
  • tomcat启动报错:java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.Lifec

    tomcat启动报错 xff1a java lang IllegalStateException ContainerBase addChild start org apache catalina Lifec 百度的结果一般都是让修改web
  • UE4 音乐的播放与停止--基于蓝图

    要实现的功能非常简单 xff1a 点击按钮 xff0c 播放音乐 这个功能非常基础 xff0c 就两步 xff1a 1 将音乐源文件拖到context文件夹中 注意 xff0c 这里的音乐文件必须是 wav格式的 2 在按钮的onclick
  • UnityEditor.BuildPlayerWindow+BuildMethodException

    unity3D安卓打包报错 xff1a UnityEditor BuildPlayerWindow 43 BuildMethodException 61 errors at UnityEditor BuildPlayerWindow 43
  • Spark常用API<Scala>

    概览 1 转换 2 动作1 Transformation 1 1一个RDD进行转换操作1 2 两个RDD的转换操作1 3对一个Pair RDD进行转化操作1 4对两个PairRDD进行转换操作2 Action 2 1对一个RDD进行行动操作