我只是不明白为什么必须使用Runtime.addShutdownHook.如果你想在jvm退出时进行一些清理,为什么不重载守护进程类的finalize方法.使用shutdown hook而不是finalize方法有什么好处.
还有一个不推荐使用的函数runFinalizersOnExit.如果我将其设置为false,我相信终结器将无法运行.这与java保证终结器总是在垃圾收集之前运行相矛盾.
我有很大的不.对于小文件,我想使用CombineFileInputFormat合并文件,以便每个文件数据作为我的MR作业中的单个记录.我已经关注了http://yaseminavcular.blogspot.in/2011/03/many-small-input-files.html并尝试将其转换为新的api
我面临两个问题:
a)我只是用2个小文件测试它,仍然有2个映射器被激活.我期待1
b)每一行都是单个记录,我希望整个文件作为单个记录.
这可能会很痛苦,但请查看下面的代码.我在hadoop中仍然很天真
司机班
public class MRDriver extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
FileSystem fs = new Path(".").getFileSystem(getConf());
fs.printStatistics();
Job job = new Job(getConf());
job.setJobName("Enron MR");
job.setMapperClass(EnronMailReadMapper.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setNumReduceTasks(0);
job.setJarByClass(EnronMailReadMapper.class);
RawCombineFileInputFormat.addInputPath(job, new Path(args[0]));
job.setOutputFormatClass(TextOutputFormat.class);
TextOutputFormat.setOutputPath(job, new Path(args[1]));
return job.waitForCompletion(true) ? 0 :1;
}
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new MRDriver(), args);
System.exit(exitCode);
}
Run Code Online (Sandbox Code Playgroud)
}
下面的类主要是LineRecordReader的复制粘贴,修改了initialize()和nextKeyValue()函数
public class SingleFileRecordReader extends RecordReader<LongWritable, Text> { …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个AtomicStampedReference和/或AtomicMarkableReference的例子,它可以帮助我理解这些类及其功能.我无法通过网络获得任何质量示例.
我可以考虑在垃圾收集中使用它们,但一个高质量的例子将帮助我更好地理解它们.
我试图在600851475143之前获得所有素数.我正在使用Eratosthenes的Sieve.这需要我创建一个巨大的布尔数组.不好的想法,你可能会耗尽内存.任何其他方式.我尝试使用字符串,使用值为0和1的每个索引来表示true或false.但indexOf方法也返回int.
接下来我使用2d数组来解决我的问题.还有其他更好的方法可以存储如此庞大的阵列吗?
无论是行动还是权威指南,都已经从mapred类中建立了自己的基础.这些类中的大多数已在0.20.2中弃用.新类的签名是不同的.谁能告诉我所做的各种改变.例如,不推荐使用分区器类.新型减速机将如何提供其功能.概念变化发生在0.20.2
我该怎么用?在hadoop wiki上,我看到Download 1.0.X - 当前稳定版本,1.0版本1.1.X - 当前beta版本,1.1版本2.XX - 当前alpha版本0.23.X - simmilar到2.XX但缺少NN HA.0.22.X - 不包括安全性0.20.203.X - 传统稳定版本0.20.X - 旧版本
这是否意味着已经弃用了已映射的类并已重新引入.我应该使用哪个hadoop版本?0.20.2或1.0.x?
我刚观看了Patrick McFadin关于cassandra数据模型的YouTube视频.
有一张表,如下:
create table user_activity_history {
username varchar,
interaction_date varchar,
activity_code varchar,
detail varchar,
PRIMARY KEY((username,interaction_date),interaction_time)
);
Run Code Online (Sandbox Code Playgroud)
为什么是主键((username,interaction_date),interaction_time).这有什么不同(username,interaction_date,interaction_time).
从这个链接,我理解"由于lock()和unlock()方法调用是显式的,我们可以将它们移动到任何地方,建立任何锁定范围,从单行代码到跨越多个方法的范围"
所以我从上面的陈述中理解的是
public class Test {
Lock l = new ReentrantLock();
void myMethod1() {
l.lock();
// Do my stuff here
}
void myMethod2() {
// Do more stuff here
l.unlock();
}
}
Run Code Online (Sandbox Code Playgroud)
所以基本上1可以按顺序调用method1和method2,并假设调用是线程安全的.
我不确定如上所述是否属实.
如果有人在我已经执行method1/method2对时调用method2怎么办?这不是事情的复杂化.
我认为在从函数返回控件之前,应该在函数本身中获取并释放锁.我的理解是否正确?
我有一组函数注释,我在迭代一个值列表时生成.我想在列表中捕获这些值"functions_names"并将其用于进一步处理.我怎样才能做到这一点?
谢谢
我不确定这是否是提出这个问题的正确平台.但我的问题陈述是:我有一个书店和x没有客户(x很大).
客户可以告诉我书是好还是坏(不推荐).我有一个内部逻辑来共同书籍,所以如果一个客户说一本书是坏的,他说同样的书也很糟糕,并没有告诉他.
我责备并隐藏这些书.客户也可以在他们之间进行交互,并且他们之间具有相互信任.当客户A说Book X1不好时就会出现这种情况.因此我黑名单X1,X2,X3,X4等.
但是他的朋友客户B说X3很好.所以现在我必须向X展示X3.我正在考虑根据他们的互动建立我所有客户的社交网络,并能够计算他们的相互信心水平.因此,在上述情况下,如果相互置信水平非常高,则会将X3显示为A,否则我将不会将X3显示给A.
我想让自己开始建立社交网络并分配一个wt.到2个节点(我的客户端)之间的路径.请给我一些好的指示,我可以从哪里开始.任何书籍,网站等
谢谢
我尝试使用示例https://github.com/apache/cassandra/tree/trunk/examples/triggers
我接受了帮助并编写了自己的触发器.但是我在UnsortedColumns.getColumn(UnsortedColumns.java:105)上得到UnsupportedOperationException.这是网络上唯一活跃的例子.其他人在此示例中已弃用.我该如何解决 ?
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.RowMutation;
import org.apache.cassandra.triggers.ITrigger;
public class FirstTrigger implements ITrigger {
@Override
public Collection<RowMutation> augment(ByteBuffer key, ColumnFamily update) {
List<RowMutation> mutations = new ArrayList<RowMutation>();
for (ByteBuffer name : update.getColumnNames()) {
RowMutation mutation = new RowMutation("mykeyspace", update.getColumn(name).value());
mutation.add("trigger_log", name, key, System.currentTimeMillis());
mutations.add(mutation);
}
return mutations;
}
}
Run Code Online (Sandbox Code Playgroud)
存储日志事件的模式是:
use mykeyspace;
create table if not exists TRIGGER_LOG (
transaction_id int,
log varchar,
PRIMARY KEY (transaction_id));
Run Code Online (Sandbox Code Playgroud)
我的错误是
ERROR [Thrift:1] 2013-10-28 …Run Code Online (Sandbox Code Playgroud)