草庐IT

scala-compiler

全部标签

scala - mutable.Buffer 不适用于类型安全 API 的 Scalding JobTest

我几乎完成了我的Scalding项目,该项目使用类型安全API而不是字段API。在整个项目设置中留给我的最后一个问题是整个Scalding作业本身的集成测试(我已经完成了类型安全外部操作模式的单元测试耶!)。这意味着运行完整的作业并测试我的作业的各种接收器的输出。然而,一些非常奇怪的事情正在发生。在我的typedSink{scala.collection.mutable.Buffer[]=>Unit}似乎我的程序没有看到缓冲区或对缓冲区做任何事情,所以集成测试总是通过,即使它不应该通过。下面是工作本身和有助于阐明正在发生的事情的测试:objectMyJob{valinputArgPat

scala - 在 Spark 中重用连接的数据框

我在本地运行HDFS和Spark,并试图了解Spark持久性的工作原理。我的目标是将连接的数据集存储在内存中,然后动态地对其运行查询。但是,我的查询似乎是重做连接而不是简单地扫描持久的预连接数据集。我通过从HDFS加载两个CSV文件创建并保存了两个数据帧,比方说df1和df2。我将两个数据帧的连接保存在内存中:valresult=df1.join(df2,"USERNAME")result.persist()result.count()然后我在结果之上定义了一些操作:valresult2=result.select("FOO","BAR").groupBy("FOO").sum("BA

scala - Spark - ElasticSearch 索引创建性能太慢

我正在尝试使用Apachespark在Elasticsearch中创建索引(将大量数据写入ES)。我已经完成了一个Scala程序来使用Apachespark创建索引。我必须索引大量数据,这是我的LinkedList中的产品bean。然后。然后我尝试遍历产品bean列表并创建索引。我的代码如下。valconf=newSparkConf().setAppName("ESIndex").setMaster("local[*]")conf.set("es.index.auto.create","true").set("es.nodes","127.0.0.1").set("es.port","

scala - 缓存的 Spark RDD(从序列文件中读取)有无效条目,我该如何解决?

我正在使用Spark(v1.6.1)阅读Hadoop序列文件。缓存RDD后,RDD中的内容变为无效(最后一个条目重复了n次)。这是我的代码片段:importorg.apache.hadoop.io.Textimportorg.apache.hadoop.mapred.SequenceFileOutputFormatimportorg.apache.spark.{SparkConf,SparkContext}objectMain{defmain(args:Array[String]){valseqfile="data-1.seq"valconf:SparkConf=newSparkCon

scala - Spark : scala - how to convert collection from RDD to another RDD

如何将调用take(5)后返回的集合转换为另一个RDD,以便在输出文件中保存前5条记录?如果我使用saveAsTextfile它不允许我一起使用take和saveAsTextFile(这就是为什么你会看到下面注释的行).它按排序顺序存储来自RDD的所有记录,因此前5个记录是前5个国家,但我只想存储前5个记录-是否可以在RDD中转换集合[take(5)]?valStrips=txtFileLines.map(_.split(",")).map(line=>(line(0)+","+(line(7).toInt+line(8).toInt))).sortBy(x=>x.split(",")

scala - 如何优化 spark 函数以将 double 值舍入为 2 位小数?

下面是我的Spark函数,它很简单defdoubleToRound(df:DataFrame,roundColsList:Array[String]):DataFrame={vary:DataFrame=dffor(colDF这按预期工作,通过使给定DF的多个列的值将小数值四舍五入到2个位置。但是我循环遍历DataFramey直到Array[Sting].length()列。有更好的方法来完成上述操作吗?谢谢大家 最佳答案 您可以简单地使用select和map,如下例所示:importorg.apache.spark.sql.fun

scala - 使用 Spark scala 中的列创建格式化 csv 文件

我有一个csv文件,如下所示它有6行,顶行作为标题,而标题读作“StudentsMarks”dataframe将它们视为一列,现在我想将两列与数据分开。“student”和“marks”用空格隔开。df.show()_______________##StudentMarks##---------------A10;20;10;20A20;20;30;10B10;10;10;10B20;20;20;10B30;30;30;20现在我想将这个csv表转换成两列,包含学生和分数,同时为每个学生加上加起来的分数,如下所示Student|MarksA|30;40;40;30B|60;60;60;

scala - 将工作分配给多个核心 : Hadoop or Scala's parallel collections?

在Scala/Hadoop系统中充分利用多核进行并行处理的更好方法是什么?假设我需要处理1亿份文档。文档不是很大,但处理它们是计算密集型的。如果我有一个包含100台机器的Hadoop集群,每台机器有10个内核,我可以:A)向每台机器发送1000个文档,让Hadoop在10个核心(或尽可能多的可用核心)中的每一个上启动一个映射或B)向每台机器发送1000个文档(仍然使用Hadoop)并使用Scala的并行集合来充分利用多核。(我会将所有文档放在一个并行集合中,然后对该集合调用map)。换句话说,使用Hadoop在集群级别进行分发,并使用并行集合来管理分发到每台机器内的核心。

scala - Hadoop 作业在 java.lang.ClassNotFoundException 上失败

我已经搜索过这个问题的解决方案,但无济于事。我有三个Scala类:MaxTemperatureMapper、MaxTemperatureReducer和MaxTemperatureDriver(请参阅下面的实现)。之前线程中的一些人删除了Main类(MaxTemperatureDriver)中的job.setJar()方法以使hadoop作业运行。那对我不起作用。运行时我继续收到以下堆栈跟踪:hadoopcom.koadr.hadoop.MaxTemperatureDrivermicro/sample.txt输出hadoopjartarget/classes/koadr-hadoop-

scala - spark sbt编译报错libraryDependencies

1.2.0-bin-hadoop2.4我的Scala版本是2.11.7。我收到一个错误,所以我不能使用sbt。~/sparksample$sbt启动sbt:使用-help调用其他选项[info]将当前项目设置为SparkSample(在构建文件中:/home/beyhan/sparksample/)>sbtcompile[info]正在更新{file:/home/beyhan/sparksample/}default-f390c8...[info]解析org.scala-lang#scala-library;2.11.7...[info]正在解决org.apache.spark#spa