Saya menulis program percikan untuk menghitung kata tetapi sekarang saya ingin Menghitung huruf, bukan kata. Adakah yang bisa tolong beri tahu saya apa yang harus saya ubah dalam kode berikut:

Berikut adalah kode untuk menghitung kata

public class WordCount {


static class SplitFunction implements FlatMapFunction<String, String>
 {
 public Iterable<String> call(String s) {
    return Arrays.asList(s.split(" "));
  }
 }

public static void main(String[] args)
{

SparkConf sparkConf = new SparkConf();
sparkConf.setAppName("Spark WordCount example using Java");

sparkConf.setMaster("local");
JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);

JavaRDD<String> textFile = sparkContext.textFile("input.txt");

JavaRDD<String> words = textFile.flatMap(new SplitFunction());

JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {
      public Tuple2<String, Integer> call(String s) {
        return new Tuple2<String, Integer>(s, 1);
      }
     });
 JavaPairRDD<String, Integer> counts = pairs.reduceByKey(
    new Function2<Integer, Integer, Integer>() {
      public Integer call(Integer a, Integer b) {
        return a + b;
      }
    });


counts.saveAsTextFile("output");
sparkContext.stop();
sparkContext.close();
   }
 }
0
ND Gaming 12 Mei 2021, 20:42

1 menjawab

Jawaban Terbaik

Saya tidak pernah menggunakan Java karena itu menyebalkan. Gunakan Scala adalah saran saya.

Jika Anda melihat contoh jumlah kata ini dari dokumen:

JavaRDD<String> textFile = sc.textFile("hdfs://...");
JavaPairRDD<String, Integer> counts = textFile
    .flatMap(s -> Arrays.asList(s.split(" ")).iterator())
    .mapToPair(word -> new Tuple2<>(word, 1))
    .reduceByKey((a, b) -> a + b);
counts.saveAsTextFile("hdfs://...");

Kemudian jika Anda membagi seperti ini: s.split("")), maka Anda akan mendapatkan semua karakter termasuk pemisah.

Anda kemudian dapat memfilter jumlah pemisah selanjutnya. Anda mungkin ingin mengubah nama dalam kode, tentu saja.

0
thebluephantom 12 Mei 2021, 18:47