Tag: scala

斯卡拉光滑的方法到目前为止我不明白

我试图理解一些油滑的作品和它需要的东西。 这里是一个例子: package models case class Bar(id: Option[Int] = None, name: String) object Bars extends Table[Bar]("bar") { def id = column[Int]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column def name = column[String]("name") // Every table needs a * projection with the same type as the table's type parameter def * = id.? ~ […]

我怎样才能将一个数据框分成SCALA和SPARK中具有相同列值的数据框?

使用Scala,我怎样才能将dataFrame分割成多个dataFrame(无论是数组还是集合)具有相同的列值。 例如,我想拆分下面的DataFrame: ID Rate State 1 24 AL 2 35 MN 3 46 FL 4 34 AL 5 78 MN 6 99 FL 至: 数据集1 ID Rate State 1 24 AL 4 34 AL 数据集2 ID Rate State 2 35 MN 5 78 MN 数据集3 ID Rate State 3 46 FL 6 99 FL

Spark:如何将Python与Scala或Java用户定义函数进行映射?

比方说,我们的团队已经selectPython作为用Spark开发的参考语言。 但后来出于性能方面的原因,我们想开发特定的Scala或Java特定的库,以便将它们与我们的Python代码(类似于具有Scala或Java框架的Python存根)进行映射。 难道你不觉得是否有可能通过一些Scala或Java用户定义函数来接口新的自定义Python方法?

如何模式匹配在Scalagenericstypes?

假设我们有一个generics类Container : case class Container[+A](value: A) 然后,我们想模式匹配一​​个Container与一个Double和任何Container : val double = Container(3.3) var container: Container[Any] = double 要做到这一点,我们通常会写: container match { case c: Container[String] => println(c.value.toUpperCase) case c: Container[Double] => println(math.sqrt(c.value)) case _ => println("_") } 然而,编译器给出了两个警告,其中前两个是每个警告。 例如,第一个警告说:“types模式Container [String]中的非variablestypes参数String未被选中,因为它被擦除”。 由于擦除,在运行时不可能区分不同types的容器,并且第一次捕获将匹配。 因此, Container[Double]types的Container[Double]将被第一个与Container[String]对象相匹配的case匹配,所以toUpperCase方法将在Double上被调用,并抛出java.lang.ClassCastException 。 如何匹配由特定types参数化的Container ?

在Apache Spark 1.3中向数据框添加一列

这是可能的,什么是最有效的整洁的方法添加一列到数据框? 更具体地说,列可以用作现有数据框的行ID。 在简单的情况下,从文件中读取,而不是标记它,我可以想到下面的东西(在斯卡拉),但它完成与错误(在第3行),反正看起来不是最好的路线可能: var dataDF = sc.textFile("path/file").toDF() val rowDF = sc.parallelize(1 to DataDF.count().toInt).toDF("ID") dataDF = dataDF.withColumn("ID", rowDF("ID"))

增加Scala的JVM堆大小?

我有一个Scala数据处理工具,这是一个java.lang.OutOfMemoryErrorexception失败。 这个工具需要在一个大的数据文件(我正在使用的那个文件超过700MB)上做一对夫妇传递,所以如果整个东西都可以存储在内存中,那将是很方便的。 我使用“scala”runner从命令行或Bash脚本运行该工具。 如何增加这个JVM堆大小? 我试过传递-Xmx1024m ,但是不能识别这个参数。 我正在使用每晚构build的Scala 2.8.0(r18678)。

斯卡拉咖喱与部分应用的function

对不起,新手问题。 我意识到这里有几个关于什么是咖喱和部分应用function的问题,但是我在问他们是如何不同的。 作为一个简单的例子,这里是一个查找偶数的curry函数: def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head :: filter(xs.tail, p) else filter(xs.tail, p) def modN(n: Int)(x: Int) = ((x % n) == 0) 所以你可以写下面的内容来使用它: val nums = List(1,2,3,4,5,6,7,8) println(filter(nums, modN(2)) 它返回: List(2,4,6,8) 。 但我发现我可以这样做同样的事情: def modN(n: Int, x: Int) = ((x % n) […]

斯卡拉vs Python的Spark性能

我比Python更喜欢Python。 但是,由于Spark本身就是用Scala编写的,所以我期望我的代码在Scala中运行得比Python版本更快,原因很明显。 有了这个假设,我想学习和写一些非常普通的预处理代码的Scala版本的一些1 GB的数据。 数据来自Kaggle的SpringLeaf竞赛。 只是给出了数据的概述(它包含1936年的维度和145232行)。 数据由各种types组成,如int,float,string,boolean。 我正在使用6个核心中的8个进行Spark处理; 这就是为什么我使用minPartitions=6以便每个核心都有可处理的东西。 斯卡拉代码 val input = sc.textFile("train.csv", minPartitions=6) val input2 = input.mapPartitionsWithIndex { (idx, iter) => if (idx == 0) iter.drop(1) else iter } val delim1 = "\001" def separateCols(line: String): Array[String] = { val line2 = line.replaceAll("true", "1") val line3 = line2.replaceAll("false", "0") val vals: Array[String] = […]

MatchError在访问Spark 2.0中的向量列时

我正在尝试在JSON文件上创build一个LDA模型。 用JSON文件创build一个spark上下文: import org.apache.spark.sql.SparkSession val sparkSession = SparkSession.builder .master("local") .appName("my-spark-app") .config("spark.some.config.option", "config-value") .getOrCreate() val df = spark.read.json("dbfs:/mnt/JSON6/JSON/sampleDoc.txt") 显示df应该显示DataFrame display(df) 标记文本 import org.apache.spark.ml.feature.RegexTokenizer // Set params for RegexTokenizer val tokenizer = new RegexTokenizer() .setPattern("[\\W_]+") .setMinTokenLength(4) // Filter away tokens with length < 4 .setInputCol("text") .setOutputCol("tokens") // Tokenize document val tokenized_df = tokenizer.transform(df) 这应该显示tokenized_df display(tokenized_df) 获取stopwords %sh […]

如何使用JDBC源在(Py)Spark中写入和读取数据?

这个问题的目的是logging: 在PySpark中使用JDBC连接读取和写入数据所需的步骤 JDBC源和可能的解决scheme可能存在的问题 只需稍作更改,这些方法就可以与Scala和R等其他支持的语言一起工作。