我每次都要解决这个问题。我不能使用来理解的方法来映射包含在Future中的东西。
示例:
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
val f = Future( List("A", "B", "C") )
for {
list <- f
e <- list
} yield (e -> 1)
这给了我一个错误:
error: type mismatch;
found : Lis
我正在Scala中创建一些测试,并试图更好地理解我正在看到的一些行为。
当我用返回类型编写我的方法时,我的测试通过了。
def cube(x: Int): Int ={
x * x * x
}
test("CubeTest") {
assert(CubeCalculator.cube(3) === 27)
}
但是,当我不指定返回类型时,测试失败:
def cube(x: Int){
x * x * x
}
我的印象是Scala编译器可以推断方法的返回类型,那么为什么我需要声明它才能通过测试呢?
我正在开发一个Spark程序,并收到以下异常:
16/11/07 15:58:25 ERROR yarn.ApplicationMaster: User class threw exception: java.util.concurrent.TimeoutException: Futures timed out after [3000 seconds]
java.util.concurrent.TimeoutException: Futures timed out after [3000 seconds]
at scala.concurrent.impl.Promise$Default
我有一个Scala/Akka应用程序,它使用Kryo存储序列化消息,然后在以后运行时将它们重新介绍给系统。但是,当我试图在消息中的列表上运行用于理解的函数时,我会得到Scala的异常。
java.util.NoSuchElementException: head of empty list
at scala.collection.immutable.Nil$.head(List.scala:422)
at scala.collection.immutable.Nil$.head(List.scala:419)
at scala.collection.immutable.
我希望能够安全地获取基于值的枚举。
object UserType extends Enumeration {
type UserType = Value
val Anonymous, Member, Paid = Value
}
如果我这样做了:
UserType(100)
我得到一个错误:
java.util.NoSuchElementException: key not found: 100
at scala.collection.MapLike$class.default(MapLike.scala:228)
at scala.collection.AbstractMa
我有一个DataFrame,它是我用拼花文件创建的。
val file = "/user/spark/pagecounts-20160713-150000.parquet"
val df = sqlContext.read.parquet(file)
df.registerTempTable("wikipedia")
现在我想做一个更新:
// just a dummy update statement
val sqlDF = sqlContext.sql("update wikipedia set requests=0 where artic
两个问题
问题1接受类型参数的类的用途是什么?
我能理解
trait SomeTrait[T]
我很难理解什么是这样的用例
class SomeClass[A](a:A) {...}
当我们将已知类型的参数传递给函数或类时,我们知道允许对该参数进行哪些操作。因此,如果我有一个类如下所示,我知道由于参数是Int类型的,所以我可以对参数'a‘执行'+’
scala> class IntTest(a:Int) {
| def plusandPrintInt = {println(a+1)} //as 'a' is Int, we can do +
考虑以下示例
案例1:
>scala val x = 1
x:Int = 1
>scala x = 2
<console>:11: error: reassignment to val
x=2
^
案例2:
scala> val name = new scala.collection.mutable.HashMap[String, Int]
name: scala.collection.mutable.HashMap[String,Int] = Map()
scala>name("Hello") = 1
scala>n
为了获取Scala,我正在转换一个小型Java项目。
我有这样的豆类。我们的目标是有两个字段和getter和setter来配合它。对于数字或String,我知道我们可以用'0‘或空字符串初始化它。但是,对于类,我不知道用什么来初始化它。据我所知,null在Scala中是不受欢迎的。
class CoreSearchPageResultS extends Serializable {
var wikiHits: SearchResult[WikiSearchHit]=null
var webHits: SearchResult[WebSearchHit]=null
}
相反
简写为:
EC2集群:1主3从站
火花版本: 1.3.1
我希望使用选项spark.driver.allowMultipleContexts,,一个上下文本地(仅主)和一个集群(主和从)。
我得到这个堆栈跟踪错误(第29行是我调用初始化第二个闪烁上下文的对象的地方):
fr.entry.Main.main(Main.scala)
at org.apache.spark.SparkContext$$anonfun$assertNoOtherContextIsRunning$1$$anonfun$apply$10.apply(SparkContext.scala:1812)
at or
我已经在Scala上编码两年了,我在我的代码中使用了很多选项。我觉得它很清楚,很容易理解,也很容易治疗。这是一种正常的方法:
val optString = Some("hello")
optString match {
case Some(str) => //do something here!
case None => //do something here
}
我认为这是处理Scala选项的最好方法,但我想问一下有没有更好的方法?
当尝试用烫伤/ Hadoop读取s3时,会产生奇怪的NPE。路径是100%正确的。
问这个问题是因为谷歌出奇的难,每次我遇到这个错误,我都忘了我是怎么解决的。所以,在上面张贴,这样我就可以谷歌自己。
Caused by: java.lang.NullPointerException
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.listStatus(NativeS3FileSystem.java:479)
at org.apache.hadoop.fs.Globber.listStatus(Globber
我能够让这三个人在一个以.java文件为主要文件的"Scala项目“中运行Hello World。问题是它来自一个我不使用的"Java项目“,尽管我的"Scala项目”中有JRE系统库。下面是我用来帮助理解……的代码。
JRuby.java
import org.jruby.embed.ScriptingContainer;
public class JRuby {
public static void main(String[] args)
{
我刚刚开始使用Scala的学习曲线,并不能完全理解"case“在部分函数中的工作原理。
我查看了PartialFunction本身的定义,在这里我看到了一个示例,如下所示:
val isEven: PartialFunction[Int, String] = {
case x if x % 2 == 0 => x+" is even"
}
我陷入困境的部分是大小写x,如果x%2 -- Scala怎么知道这里是什么?这个"case“语句/关键字的正式定义是什么?
我认为造成我困惑的一个原因是,在Lift中,我看到了如下情况(在Actor类中):
o
我知道这在以前的其他文章中已经讨论过了,我理解使用def和val之间的基本区别。def用于为不可变引用定义方法和val。我问这个问题的目的是想了解def是否还有更多的东西。它可以与val互换使用吗
最近,我尝试了以下代码,但无法说服自己目前对def的理解是否足够:
scala> def i: Int = 3
i: Int
scala> i
res2: Int = 3
所以我很好奇,这等同于val i = 3吗?
然后我试了一下:
scala> i()
<console>:9: error: Int does not take parameters
i()
我这样