Tag: scala

使用JavaConversions在java和scala集合之间进行隐式转换

我使用通用函数合并了scala Set of scala Map def mergeMaps[A, B](ms: Set[Map[A, B]])(f: (B, B) => B): Map[A, B] = (Map[A, B]() /: (for (m <- ms; kv a + (if (a.contains(kv._1)) kv._1 -> f(a(kv._1), kv._2) else kv) } 这可以处理存在相同键冲突的情况。 但是,我想在Scala Code中使用Java集合来实现它。 我研究了一下,遇到了JavaConversions 。 我导入了它并写了这个 def mergeMaps[A, B](ms: Set[Map[A, B]])(f: (B, B) => B): Map[A, B] = (new […]

如何在不使用collect函数的情况下有效地将rdd转换为list

我们知道如果我们需要将RDD转换为列表,那么我们应该使用collect()。 但是这个函数给驱动程序带来了很大的压力(因为它将来自不同执行程序的所有数据带到驱动程序中),这会导致性能下降或更糟(整个应用程序可能会失败)。 有没有其他方法可以将RDD转换为任何java util集合而不使用不会导致性能下降的collect()或collectAsMap()等? 基本上在我们处理批量或流数据处理中的大量数据的当前场景中,诸如collect()和collectAsMap()之类的API在具有实际数据量的真实项目中变得完全无用。 我们可以在演示代码中使用它,但这些都可用于这些API。 那么为什么要有一个我们甚至无法使用的API(或者我错过了什么)。 有没有更好的方法通过其他方法实现相同的结果,或者我们可以更有效地实现collect()和collectAsMap()其他只是调用 List myList= RDD.collect.toList (影响性能) 我抬头看谷歌但找不到任何有效的东西。 如果有人有更好的方法,请帮忙。

如何在Scalding中输出数据

我正在尝试将管道输出到不同的目录中,以便每个目录的输出将基于某些ID进行分区。 所以在一个普通的地图中减少代码我会使用MultipleOutputs类,我会在reducer中做这样的事情。 protected void reduce(final SomeKey key, final Iterable values, final Context context) { … for (SomeValue value: values) { String bucketId = computeBucketIdFrom(…); multipleOutputs.write(key, value, folderName + “/” + bucketId); … 所以我想在烫伤时可以这样做 … val somePipe = Csv(in, separator = “\t”, fields = someSchema, skipHeader = true) .read for (i (id.hashCode % numberOfBuckets) == i} […]

如果列标签是同名的,如何使用java解析Spark中的XML

我尝试使用java 1.8解析spark 2.2中的XML,但这并没有给出预期的数据集。 样本xml – url1 123 english 我试过的代码 – Dataset xmlParse = spark .read() .format(“com.databricks.spark.xml”) //.option(“rootTag”, “RECORDS”) .option(“rowTag”, “RECORD”) .load(“sample.xml”); xmlParse.printSchema() root |– PROP: array (nullable = true) | |– element: struct (containsNull = true) | | |– PVAL: string (nullable = true) | | |– _NAME: string (nullable = true) xmlParse.show |PROP +——————————————- […]

为什么Scala可以序列化Function而不是PartialFunction?

我有2个函数(其中1个是部分的)在一个对象下类似地定义: val partialFn: scala.PartialFunction[String, Int] = new AbstractPartialFunction[String, Int] { override def isDefinedAt(v: String): Boolean = { counter += 1 if (v == “abc”) true else false } override def applyOrElse[A1 : Int](v: A1, default: A1 => B1): B1 = { counter += 1 if (v == “abc”) { v.length } else { default(v) } […]

sbt添加java项目

使用IDEA IntelliJ中的一些scala软件。 (如果必要,它还具有Androidfunction)。 假设我有两个项目: 用scala编写的P1使用sbt作为构建工具 P2,用java编写,使用gradle作为构建工具 我想从P2调用一些代码,它有完整的源代码。 所以我在我的IntelliJ scala项目中导入P2作为模块。 但是当我使用sbt-shell编译我的sbt项目时,它告诉我一个错误,它无法找到在P2中声明的类和包的任何定义。 我想我需要在build.sbt文件中创建一个正确的引用,以便它可以理解定义的来源。 我找到了一个解决方案,建议将非托管java源路径添加到build.sbt,如下所示: unmanagedSourceDirectories in Compile += file(“mydependency”) 但事情是依赖本身具有依赖性。 当我尝试编译时,sbt告诉我它无法找到该依赖项的定义。 所以我需要一种方法来引用build.sbt中的完整java项目,这样我就可以通过sbt shell编译整个东西(实际上,我被迫使用非常sbt shell)。 有什么建议么?

如何在Scala中使用Java包com.example …对象

如何引用包含名称中的对象的Java包,例如Scala中的com.example.object? Scala将对象视为保留字并抱怨。

Joda DateTime:用字符串中的“CEST”解析日期

我想使用joda库解析DateTime(在scala中,但应该与java相同)。 来源看起来像 val dateParser = DateTimeFormat.forPattern(“yyyy-MM-dd HH:mm:ss z”) val date = dateParser.parseDateTime(“2012-08-28 15:35:00 CEST”) 在Java中,这看起来像 DateTimeFormatter dateParser = DateTimeFormat.forPattern(“yyyy-MM-dd HH:mm:ss z”); DateTime date = dateParser.parseDateTime(“2012-08-28 15:35:00 CEST”); 不幸的是,这不起作用,但抛出exception: java.lang.IllegalArgumentException: Invalid format: “2012-08-28 15:35:00 CEST” is malformed at “CEST” 为什么这不起作用? 当然我可以忽略“CEST”部分并解析剩下的部分,但在输入中“CEST”有时会被“CET”替换,所以我不想忽略它。

抓住一个“双”热键

我必须抓住Ctrl+Alt+C, C的热键(意思是,按Ctrl+Alt+C ,仅释放C并再按一次)。 这是我正在尝试做的事情: import com.tulskiy.keymaster.common._ import java.awt.event._ import javax.swing.KeyStroke class KeysCatcher { val provider = Provider.getCurrentProvider(true) val ctrlC = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK + ActionEvent.ALT_MASK) val listener = new HotKeyListener() { def onHotKey(hotKey: HotKey): Unit = { hotKey.keyStroke match { case `ctrlC` => println(“Ctrl+Alt+C 1 was pressed”) val listener2 = new HotKeyListener() { def onHotKey(hotKey: HotKey): […]

Java Spring作为基于Akka的REST HTTP调用的客户端

我必须使用java-spring在scala-akka项目中编写这个REST服务。 我的scala REST服务就像 val route = post { path(“notification” / “signUp”){ headerValueByName(“App_Key”) { app_key => { handleWith { requestParameters: RequestParameters => //application specific implementation } } } } 其中包含标头中的App_Key和Content-Type以及json格式的请求参数 。 请求参数如下: case class RequestParameters ( var name: String, var email: String, var password: String, var hashKey: String ) 所以我必须从java spring调用这个REST服务。 我从java调用http://ipadress:port/notification/signUp苦苦挣扎。