对于大数据项目,我计划使用spark,它具有一些很好的功能,如内存计算,用于重复的工作负载.它可以在本地文件上运行,也可以在HDFS上运行.
但是,在官方文档中,我找不到任何关于如何处理gzip文件的提示.实际上,处理.gz文件而不是解压缩文件会非常有效.
有没有办法手动实现gzip压缩文件的读取或在读取.gz文件时已经自动解压缩?
我想用一个链表像中描述的这个文件.但是,我没有在Web中找到任何Java实现.
如果没有上面提到的链表的java实现,我想,我会用的java.util.concurrent.ConcurrentLinkedQueue<E>
.这是一个不错的选择(它不是一个真正的链表)?
如果它不是一个好的选择,有没有人知道Java中可靠的并发(线程安全)无等待(无锁)链接列表实现?
我想创建一个Windows XP批处理脚本,按顺序执行以下操作:
@echo off
:: build everything
cd \workspace\project1
mvn clean install
cd ..\project2
mvn clean install
:: run some java file
cd \workspace\project3
java -jar somefile.jar
Run Code Online (Sandbox Code Playgroud)
当我像这样创建一个Batch脚本(遵循这些说明)时,我仍然遇到脚本在第一个脚本之后停止执行某些操作的问题
mvn clean install
Run Code Online (Sandbox Code Playgroud)
然后显示命令行.如何在一个批处理文件中按顺序执行所有这些命令?
我不想引用其他文件,我想在一个文件中执行它.
与我的其他问题有关,但有所不同:
someMap.saveAsTextFile("hdfs://HOST:PORT/out")
Run Code Online (Sandbox Code Playgroud)
如果我将RDD保存到HDFS,如何通过gzip告诉spark压缩输出?在Hadoop中,可以设置
mapred.output.compress = true
Run Code Online (Sandbox Code Playgroud)
并选择压缩算法
mapred.output.compression.codec = <<classname of compression codec>>
Run Code Online (Sandbox Code Playgroud)
我如何在火花中做到这一点?这会有效吗?
编辑:使用spark-0.7.2
在官方的spark文档中,有一个累加器的例子,它在一个foreach
直接在RDD上的调用中使用:
scala> val accum = sc.accumulator(0)
accum: spark.Accumulator[Int] = 0
scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x)
...
10/09/29 18:41:08 INFO SparkContext: Tasks finished in 0.317106 s
scala> accum.value
res2: Int = 10
Run Code Online (Sandbox Code Playgroud)
我实现了自己的累加器:
val myCounter = sc.accumulator(0)
val myRDD = sc.textFile(inputpath) // :spark.RDD[String]
myRDD.flatMap(line => foo(line)) // line 69
def foo(line: String) = {
myCounter += 1 // line 82 throwing NullPointerException
// compute something on the input
}
println(myCounter.value)
Run Code Online (Sandbox Code Playgroud)
在当地环境中,这很好用.但是,如果我在具有多台计算机的spark独立集群上运行此作业,则工作人员会抛出一个
13/07/22 21:56:09 ERROR executor.Executor: …
Run Code Online (Sandbox Code Playgroud) 在spark-env.sh中,可以配置以下环境变量:
# - SPARK_WORKER_MEMORY, to set how much memory to use (e.g. 1000m, 2g)
export SPARK_WORKER_MEMORY=22g
[...]
# - SPARK_MEM, to change the amount of memory used per node (this should
# be in the same format as the JVM's -Xmx option, e.g. 300m or 1g)
export SPARK_MEM=3g
Run Code Online (Sandbox Code Playgroud)
如果我用这个启动一个独立的集群:
$SPARK_HOME/bin/start-all.sh
Run Code Online (Sandbox Code Playgroud)
我可以在Spark Master UI网页上看到所有工作人员只有3GB内存:
-- Workers Memory Column --
22.0 GB (3.0 GB Used)
22.0 GB (3.0 GB Used)
22.0 GB (3.0 GB Used)
[...]
Run Code Online (Sandbox Code Playgroud)
但是,我在spark-env.sh中将22g指定为SPARK_WORKER_MEMORY
我有点困惑.可能我不明白"节点"和"工人"之间的区别.
有人可以解释两个内存设置之间的差异以及我可能做错了什么吗?
我正在使用spark-0.7.0.有关更多配置信息,另请参见此处.
我想Eclipse解析例如javadoc中的这个超链接:
/*
* for reference, look here: http://www.google.com
*/
Run Code Online (Sandbox Code Playgroud)
目标是超链接只是"可点击"任何正常的超链接(例如在pdf或doc文件中).
做什么的时候
// creating list1, adding items
LinkedList slist = new LinkedList();
slist = subList(list1, 2,5);
Run Code Online (Sandbox Code Playgroud)
我将有一个第二个对象("list"元素2到5的"副本")由subList返回并包含在slist中.但是,出于性能/内存的原因,我想有一些东西只给我一个list1的"视图",而不创建新对象而不分配新内存.
在MATLAB中计算某些方阵A的逆时,使用
Ai = inv(A)
% should be the same as:
Ai = A^-1
Run Code Online (Sandbox Code Playgroud)
MATLAB通常会通知我这不是最有效的反转方式.那么什么更有效?如果我有一个方程式系统,可能使用/,\运算符.但有时我需要其他计算的逆.
反转最有效的方法是什么?
我有一个文本分类数据集,可以在MATLAB中使用.每个文档都是此数据集中的向量,此向量的维度非常高.在这些情况下,peopl通常会在向量上进行一些特征选择,例如您实际找到WEKA工具包的那些.在MATLAB中有类似的东西吗?如果没有,你可以建议和算法让我这样做吗?谢谢
apache-spark ×4
scala ×4
java ×3
mapreduce ×3
matlab ×2
batch-file ×1
cmd ×1
comments ×1
compression ×1
concurrency ×1
eclipse ×1
gzip ×1
hdfs ×1
javadoc ×1
linked-list ×1
list ×1
matrix ×1