diff --git a/lab2/hints.txt b/lab2/hints.md similarity index 65% rename from lab2/hints.txt rename to lab2/hints.md index f629dff..0b43f58 100644 --- a/lab2/hints.txt +++ b/lab2/hints.md @@ -1,4 +1,10 @@ -1. Подзадачи "Преобразовать любой файл набора данных stackoverflow в parquet формат c помощью Apache Spark.": + +# Рекомендации и подсказки + +### 1. Для парсинга xml строк используйте метод `scala.xml.XML.loadString`. +### 2. Для получения значений из полученного объекта `myxml.attribute('UserId')` или `myxml.attributes.asAttrMap('UserId')`. + +### 3. Подзадачи "Преобразовать любой файл набора данных stackoverflow в parquet формат c помощью Apache Spark.": 1) создать объект типа RDD для текстового файла /data/stackoverflow/posts.xml 2) добавить к каждому объекту индекс .zipWithIndex 3) убрать из коллекции строки 1, 2 и последню фильтрацией по индексу @@ -10,5 +16,6 @@ 6) создать Dataset на основе коллекции объектов класса-схемы методом spark.createDataset 7) сохранить таблицу в parquet файл -2. Код решения части 2. - - https://gist.github.com/protsenkovi/f163377113b172ccfeb5db397f7dd75c +# Пример решения + +https://gist.github.com/protsenkovi/f163377113b172ccfeb5db397f7dd75c diff --git a/lab2/Л2 - Aparche Spark Reports.md b/lab2/Л2 - Aparche Spark Reports.md new file mode 100644 index 0000000..86293c2 --- /dev/null +++ b/lab2/Л2 - Aparche Spark Reports.md @@ -0,0 +1,31 @@ +# Лабораторная 2. Формирование отчётов в Apache Spark + +## Задание + +1. Преобразовать любой файл набора данных **Stack Overflow** в parquet формат c помощью Apache Spark. + +2. Сформировать отчёт с информацией о частоте обсуждения 10 наиболее популярных языков программирования +в каждом году с 2010 года по сегодняшний день. Используйте теги входящие в список языков +перечисленных в википедии https://en.wikipedia.org/wiki/List_of_programming_languages. + +Для выполнения задания вы можете использовать любую комбинацию Spark API: **RDD API**, **Dataset API**, **SQL API**. + +## Набор данных + +Архивы сайтов **Stack Exchange** доступны по адресу https://archive.org/details/stackexchange. + +В папке `data` данного репозитория вам доступны: +- выборка данных `posts_sample.xml`, +- файл со списком языков `programming-languages.csv`, собранных с вики-страницы. + +Рекомендуется отлаживать решение на небольшой выборке данных `posts_sample.xml`. Данная выборка была получена следующим кодом: +``` + sc.textFile("/user/mapr/posts.xml").mapPartitions(_.take(100)) +``` + +## Ссылки на источники + 1. https://spark.apache.org/docs/latest/sql-programming-guide.html + 2. http://timepasstechies.com/spark-dataset-api-examples-tutorial-20/ + 3. https://jaceklaskowski.gitbooks.io/mastering-spark-sql/ + 4. https://en.wikipedia.org/wiki/OLAP_cube + 5. http://homepage.cs.latrobe.edu.au/zhe/ZhenHeSparkRDDAPIExamples.html diff --git a/lab2/Л2 - Aparche Spark Reports.pdf b/lab2/Л2 - Aparche Spark Reports.pdf deleted file mode 100644 index 70a187d..0000000 Binary files a/lab2/Л2 - Aparche Spark Reports.pdf and /dev/null differ diff --git a/lab2/Л2 - Aparche Spark Reports.txt b/lab2/Л2 - Aparche Spark Reports.txt deleted file mode 100644 index 9c2f99d..0000000 --- a/lab2/Л2 - Aparche Spark Reports.txt +++ /dev/null @@ -1,30 +0,0 @@ -Лабораторная 2. Формирование отчётов в Apache Spark - -Задание: - -1. Преобразовать любой файл набора данных stackoverflow в parquet формат c помощью Apache Spark. - -2. Сформировать отчёт с информацией о частоте обсуждения 10 наиболее популярных языков программирования -в каждом году с 2010 года по сегодняшний день. Используйте теги входящие в список языков -перечисленных в википедии https://en.wikipedia.org/wiki/List_of_programming_languages. - - -Набор данных: - -https://archive.org/details/stackexchange - -Для выполнения задания используйте Dataset API и/или SQL API. Рекомендуется отлаживать код на небольшой выборке данных. - -Пример кода для получения тестовой выборки: - sc.textFile("/user/mapr/posts.xml").mapPartitions(_.take(100)) - -Для парсинга xml строк используйте метод scala.xml.XML.loadString, для получения значений из -полученного объекта myxml.attribute('UserId') или myxml.attributes.asAttrMap('UserId'). - - -Ссылки на источники: - 1. https://spark.apache.org/docs/latest/sql-programming-guide.html - 2. http://timepasstechies.com/spark-dataset-api-examples-tutorial-20/ - 3. https://jaceklaskowski.gitbooks.io/mastering-spark-sql/ - 4. https://en.wikipedia.org/wiki/OLAP_cube - 5. http://homepage.cs.latrobe.edu.au/zhe/ZhenHeSparkRDDAPIExamples.html