«Это 10-й день моего участия в первом испытании обновлений 2022 года. Подробную информацию о мероприятии см.:Вызов первого обновления 2022 г."
Всем привет, я ~
Откройте дверь Spark через 5 часов, а на третьем часу я возьму вас на классический случай ввода больших данных — WordCount.
Хватит болтать, пошли!
Описание темы
WordCount, как следует из названия, подсчитывает количество вхождений разных слов в файле, что часто используется при анализе журналов.
Один из проектов, которым я занимался, когда изучал Hadoop, состоял в том, чтобы проанализировать отношения между персонажами в романах Цзинь Юна Первым шагом было подсчет количества появлений каждого персонажа.
анализ случая
Если вы используете Java для выполнения этого требования, я думаю, что у всех найдутся идеи.
- Сегментация слов: Разделите длинные предложения на слова. Если это стандартный текст, его можно разделить пробелами. Для нестандартного текста вы можете использовать
jieba
Сегментация слов, заинтересованные студенты могут узнать об этом на Baidu. - Подсчет групп: одно и то же слово представляет собой группу, подсчитайте количество вхождений и сохраните ее на карте.
- Сохранить результаты: записать результаты в файл.
Реализация кейса
1. Локальная реализация
Открыть предыдущий разделWordCount.scala
файл, отредактируйте следующий код, в каждой строке есть комментарии, студенты, не знакомые со Scala, не должны беспокоиться о проблемах синтаксиса, наша цель — Spark.
WordCount {
def main(args: Array[String]): Unit = {
// 创建 Spark 运行配置对象
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
// 创建 Spark 上下文环境对象(连接对象)
val sc = new SparkContext(sparkConf)
// 读取文件,返回一个RDD
var input=sc.textFile("src/main/java/test.txt");
// 分词
var lines=input.flatMap(line=>line.split(" "))
// 分组计数
var count=lines.map(word=>(word,1)).reduceByKey{(x,y)=>x+y}
// 写入文件
count.saveAsTextFile("src/main/java/output");
//关闭 Spark 连接
sc.stop()
}
}
Обратите внимание на путь, по которому хранится файл, чтобы убедиться, что файл можно прочитать.
выходной результат
2. Отправить на сервер
Упакуйте его в пакет jar, загрузите его на сервер и не забудьте изменить его на путь к файлу в службе.
#启动master
./sbin/start-master.sh
#启动worker
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://VM-24-10-centos:7077
#提交作业
./bin/spark-submit --master spark://VM-24-10-centos:7077 --class WordCount /data/opt/spark/file/spark-wordcount-1.0-SNAPSHOT.jar
выходной результат
В конце концов
Хорошо, мы закончили классический вводный кейс, вам не кажется, что Spark не так уж и сложен.
Однако я не знаю, есть ли у студентов следующие вопросы:
- Как Spark объединяет счетчики внутри себя?
- Каковы отношения между Работником и Мастером?
- Что такое РДД?
Если есть, пожалуйста, настаивайте на том, чтобы вбить его. Мы ответим на ваши сомнения в ближайшие два дня и заполним яму — программирование ядра Spark.