Iamがhadoop(mapreduce)を学習しようとしています。私はマッパーメソッドを持っています。このメソッドでは、Dateクラスを使って; epoch_time;フィールドは、データセットからのミリ秒単位で表されます。データセットは、25.05.2015から10.08.2015の間の期日で構成されます。エポックを日付と時刻に変換する - HADOOP
エポックを日付/時刻に変換したいのですが、05.06.2015から15.06.2015までのエポックからの日付/時刻のみを返します。
ここまでは私がこれまで達成してきたことです。以下のコードは、次のように生成:
出力:
2015年5月25日
2015年6月25日
など
所望の出力
2015年6月5日5 //カウントをこの日の単語の出現
06.06。 2015年53
2015年7月6日41
など
マッパー
public class mapper extends Mapper<Object, Text, Text, IntWritable> {
private Text data = new Text();
private IntWritable one = new IntWritable(1);
String time;
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
String[] userinput = value.toString().split(";");
try{
LocalDateTime epoch = LocalDateTime.ofEpochSecond(Long.parseLong(userinput[0])/1000, 0, ZoneOffset.UTC);
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd.MM.yyyy");
time = epoch.format(f);
data.set(time);
context.write(data,one);
}
catch(Exception e){
System.out.println("Error: " + e);
}
}
}
リデューサー
public class reducer extends Reducer<Text, IntWritable, Text, IntWritable> {
private IntWritable one = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int sum = 0;
for (IntWritable value : values) {
sum+=value.get();
}
one.set(sum);
context.write(key, one);
}
}
こんにちは、コードは私のマッパークラスからわずかスニペットで確認してください。私はマッパー、減速機、ドライバークラスを持っています。あなたは、使用する日付のパターンをアドバイスしてもらえますか?多くのありがとう – user2023
そして、Hadoopについてではないことについての私の主張は、まだ正確です。日付範囲を特定するための単体テストまたは通常のJavaプログラムを作成して、マッパに条件を入れて、気になる日付範囲のサブセットを抽出することができます –
こんにちは、日付形式の期間があります。コードは更新されたコードスニペットをご覧ください。期間にアクセスするにはどうすればよいですか?日付範囲を取得する方法の例を教えてください。 – user2023