天道酬勤,学无止境

scala

Spark remove duplicate rows from DataFrame [duplicate]

This question already has answers here: How to select the first row of each group? (7 answers) Closed 5 years ago. Assume that I am having a DataFrame like : val json = sc.parallelize(Seq("""{"a":1, "b":2, "c":22, "d":34}""","""{"a":3, "b":9, "c":22, "d":12}""","""{"a":1, "b":4, "c":23, "d":12}""")) val df = sqlContext.read.json(json) I want to remove duplicate rows for column "a" based on the value of column "b". i.e, if there are duplicate rows for column "a", I want to keep the one with larger value for "b". For the above example, after processing, I need only {"a":3, "b":9, "c":22, "d":12}

2021-06-21 11:40:46    分类:问答    scala   apache-spark   dataframe   apache-spark-sql

可以编译Scala程序但不能运行它们(Can compile Scala programs but can't run them)

问题 我能够在终端中使用 scalac 编译 scala 程序,但我收到警告。 Charless-Macintosh:src Charles$ scalac hello.scala Charless-Macintosh:src Charles$ scala HelloWorld No such file or class on classpath: HelloWorld 这与 scala 上的.profile有关。 我对正在发生的事情感到非常困惑。 非常感谢 回答1 默认情况下,当前目录通常不在类路径中。 所以你需要明确给出: $ scala -cp . HelloWorld 回答2 问题是您已经设置了CLASSPATH环境变量。 从> man scalac : 默认的类路径是当前目录。 设置 CLASSPATH 变量或使用 -classpath 命令行选项会覆盖该默认值,因此如果要在搜索路径中包含当前目录,则必须包含“.”。 在新设置中。 当您设置了CLASSPATH变量时,scala 将不会在其搜索中包含当前目录,您必须明确添加它。 这就是为什么scala -cp . HelloWorld scala -cp . HelloWorld有效。 要验证,请执行echo CLASSPATH并且它应该给出一些非空字符串。 检查您的 .bashrc/.zshrc

2021-06-21 11:38:29    分类:技术分享    scala   compilation

Error while importing SBT project

The below is the Log that i can see when building the SBT project.What is the below trying to say ! I'm using IntelliJ IDE and Scala 2.12 and SBT 1.0.3 to build the project. I have verified the IDE Proxy settings ,its setup and works fine for other Build tools. Is something missing my SBT installation ?? I tried accessing the failing links in the log and they too are throwing up with errors. "C:\Program Files\Java\jdk1.8.0_131\bin\java" -agentlib:jdwp=transport=dt_socket,address=12805,suspend=n,server=y -server -Xmx768M -XX:MaxPermSize=384M -Dhttp.proxyHost=THISISMYPROXYADDRESS -Dhttp

2021-06-21 11:25:36    分类:问答    scala   intellij-idea   sbt

如何将 Scala Map 转换为 JSON 字符串?(How to convert Scala Map into JSON String?)

问题 例如,我在 Scala 中有这个 Map 值: val m = Map( "name" -> "john doe", "age" -> 18, "hasChild" -> true, "childs" -> List( Map("name" -> "dorothy", "age" -> 5, "hasChild" -> false), Map("name" -> "bill", "age" -> 8, "hasChild" -> false) ) ) 我想将它转换为它的 JSON 字符串表示: { "name": "john doe", "age": 18, "hasChild": true, "childs": [ { "name": "dorothy", "age": 5, "hasChild": false }, { "name": "bill", "age": 8, "hasChild": false } ] } 我目前正在研究 Play 框架 v2.3,但该解决方案不需要使用 Play JSON 库,尽管如果有人可以提供 Play 和非 Play 解决方案会很好。 这是我迄今为止所做的没有成功的事情: // using jackson library val mapper = new ObjectMapper() val res = mapper

2021-06-21 11:22:06    分类:技术分享    json   scala   playframework   playframework-2.0

Scala 未来的理解失败(failure in Scala future's for comprehension)

问题 我有三个连续的 Futures 并在这样的理解中使用 val comF = for { f1 <- future1 f2 <- future2 f3 <- future3 } yield { // something } comF onSuccess { } comF onFailure { // ---------------- Here is the problem -------------------------------- // // How do I know which future failed(throw exception), when the callback comes here ? // Thanks for the help! Different futures using different exceptions can solve it. } 现在我有一个像 List[Future[T]] 这样的未来列表,首先我使用这个方法将它传输到 Future[List[T]](为什么这个未来列表到列表的未来转换编译和工作?)。 然后我得到了未来 val fList: Future[List[T]] fList on Failure { // // How do I know which is Fail now >?? } 回答1 考虑代码: def

2021-06-21 11:20:31    分类:技术分享    scala   future

How to generate a big data stream on the fly

I have to generate a big file on the fly. Reading to the database and send it to the client. I read some documentation and i did this val streamContent: Enumerator[Array[Byte]] = Enumerator.outputStream { os => // new PrintWriter() read from database and for each record // do some logic and write // to outputstream } Ok.stream(streamContent.andThen(Enumerator.eof)).withHeaders( CONTENT_DISPOSITION -> s"attachment; filename=someName.csv" ) Im rather new to scala in general only a week so don't guide for my reputation. My questions are : 1) Is this the best way? I found this if i have a big file

2021-06-21 11:17:50    分类:问答    scala   playframework-2.1

声明变量时出现 NoSuchMethodError(NoSuchMethodError when declaring a variable)

问题 我在使用 Spark 和 Scala 时遇到了一个奇怪的错误。 我有一段代码声明了一个变量: var offset = 0 这会导致以下异常: java.lang.NoSuchMethodError: scala.runtime.IntRef.create(I)Lscala/runtime/IntRef; at my.package.MyClass$class.myMethod(MyClass.scala:5) ... 它直接指向变量声明。 我正在使用 Scala 2.11.2。 编译工作。 这是一个运行时错误。 运行sbt package时,我也没有收到任何依赖项/版本不匹配警告。 回答1 这几乎可以肯定是 Scala 版本不匹配。 对比v2.10和v2.11中IntRef的定义,可以看到create只在后面的版本中引入(见https://github.com/scala/scala/blob/v2.10.4/src/library/ scala/runtime/IntRef.java 和 https://github.com/scala/scala/blob/v2.11.0/src/library/scala/runtime/IntRef.java)。 您可以打赌,您的某些依赖项是针对 <2.11.0 的 Scala 版本编译的。 您可能想尝试 sbt

2021-06-21 11:14:22    分类:技术分享    scala   exception

Knowing if a Scala object is an instance of Case Class

I was wondering if there as a way to know if an object is an instance of a case class. I was trying to find some structural type matching unapply, I notice they inherit Product. My real need for a function that would go something like: def withCaseClass[T <: /* matcher for case class */](obj:T) ... My major interest is to make sure only case classes can be passed to this function.

2021-06-21 11:07:39    分类:问答    scala   typing

如何使用 Reactive Streams 进行 NIO 二进制处理?(How to use Reactive Streams for NIO binary processing?)

问题 是否有一些使用 org.reactivestreams 库使用 Java NIO(为了高性能)处理大型数据流的代码示例? 我的目标是分布式处理,因此最好使用 Akka 的示例,但我可以弄清楚。 大多数(我希望不是全部)在 Scala 中读取文件的示例似乎仍然是使用Source (非二进制)或直接 Java NIO(甚至像Files.readAllBytes类的Files.readAllBytes !) 也许我错过了一个激活器模板? (带有 Scala 的 Akka Streams!接近解决我需要的一切,除了二进制/NIO 方面) 回答1 不要使用scala.collection.immutable.Stream来消费这样的文件,原因是它执行记忆化 - 也就是说,虽然它是懒惰的,但它会将整个流缓冲(记忆化)在内存中! 当您考虑“流处理文件”时,这绝对不是您想要的。 Scala 的 Stream 像这样工作的原因是因为在功能设置中它完全有意义 - 例如,您可以避免一次又一次地轻松计算斐波那契数,有关更多详细信息,请参阅 ScalaDoc。 Akka Streams 提供了 Reactive Streams 实现并提供了一个FileIO类,您可以在此处使用它(它会正确地背压并仅在需要时将数据从文件中拉出,并且流的其余部分已准备好使用它): import java.io._

2021-06-21 10:27:52    分类:技术分享    scala   akka   nio   reactive-streams

带有 flatMap 的集合是 monad 吗?(Is a collection with flatMap a monad?)

问题 Scala 具有定义了Iterable[A]的特性 def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): Iterable[B] 这当然看起来像 monad 上的 bind 函数,并且文档暗示它是一个 monad,但是有两个反对意见,一个是次要的,一个是主要的: 次要的:传入函数的返回类型是这个GenTraversableOnce 。 我认为这只是在判断 monad-ness 时可以忽略的便利。 主要的:monad 的“值”是它包含的所有值的列表,但函数一次只给一个值。 这些问题是否打破了集合的单一性? 回答1 “主要”问题更容易回答:不,它没有,因为这不是它的意思。 monad 不需要具有任何特定的“值”或没有任何“值”,只需以特定方式组合函数即可。 对于“次要”,您应该关注类型。 正确地说,monad 是一个幺半群(有一些额外的约束),这意味着它是一个具有某些操作的集合。 据我所知,这个集合的元素是A => M[B]类型A => M[B]东西(在 scalaz 中,这种类型称为Kleisli ); flatMap是|+| 幺半群的操作。 Scala 中所有可能的A => Iterable[B]的集合是否针对此操作(以及合适的身份选择)形成了幺半群? 不,非常不,因为有很多可能的A => Iterable[B]违反了单子定律。

2021-06-21 10:20:55    分类:技术分享    scala   monads