Apache Spark — високопродуктивне рішення для обробки даних, що зберігаються в кластеріHadoop. У порівнянні з наданим у Hadoop механізмом MapReduce, Spark забезпечує у 100 разів більшу продуктивність при обробленні даних в пам'яті й 10 разів при розміщенні даних на дисках.[3] Рушій може виконуватися на вузлах кластера Hadoop як за допомогою Hadoop YARN, так і у відокремленому режимі. Підтримується оброблення даних у сховищах HDFS, HBase(інші мови), Cassandra, Hive(інші мови) та будь-якому форматі введення Hadoop (InputFormat).
Spark може використовуватися як у типових сценаріях оброблення даних, схожих на MapReduce, так і для реалізації специфічних методів, таких як потокове оброблення, SQL, інтерактивні та аналітичні запити, рішення задач машинного навчання і робота з графами. Програми для оброблення даних можуть створюватися на мовах Scala, Java, Python та R.
Spark після перебування в інкубаторі став первинним проєктом Apache Software Foundation від лютого 2014.
Застосунок Spark складається з процесу-драйвера (англ.driver process) та багатьох процесів виконавців (англ.executor processes)[6].
Драйвер є серцем застосунку Spark, і виконує наступні функції:
Зберігає та обробляє інформацію про стан застосунку
Відповідає на запити користувацьких програм
Аналізує та розподіляє завдання між виконавцями та порядок їх виконання.
Виконавці натомість виконують завдання та звітують про їх виконання і свій стан драйверу.
Так як драйвер і виконавці є звичайними процесами, Spark може працювати в псевдо-розподіленому локальному режимі (англ.local mode), в якому всі вони запускаються на одному комп'ютері з одним виконавцем на кожне ядро процесора і робота кластера лише емулюється. Це корисно для розробки і тестування. Зазвичай цей режим використовується для розробки або тестування, коли розподілене зберігання не потрібне і натомість використовується локальна файлова система.
API до процесу драйвера називається сесією Spark (англ.Spark Session) і доступне як змінна spark в оболонках для Scala та Python[6].
DataFrame
Основна структура даних з якою працює Spark — DataFrame. Вона містить таблицю яка складається з рядків та колонок. Список колонок та їхніх типів називають схемою (яку можна подивитись викликавши метод df.printSchema()). Аналогічні структури даних є в мові R та бібліотеці pandas, але в Spark він відрізняється тим що є розподіленим на кілька розділів (англ.partitions). Розділ — це набір рядків DataFrame на одній фізичній машині кластеру[6].
DataFrame в Spark — незмінні, але до нього можна застосувати перетворення (англ.transformations) щоб утворити новий DataFrame. Наприклад:
Перетворення ліниві, і не виконуються, а лише додаються до плану обчислень доти, доки користувач не попросить про якусь дію (англ.action). Дія може вивести дані в консоль, файл чи базу даних, або зібрати їх в об'єкти мови якою писали запит. Приклад дії — evenRows.count() — підрахунок кількості рядків в DataFrame[6].
Дія запускає завдання (англ.job), яке виконує всі необхідні перетворення та дію згідно оптимізованого плану обчислень. Процес виконання завдання можна моніторити з вебінтерфейсу користувача Spark, який знаходиться за адресою http://localhost:4040/ в локальному режимі, або на вузлі кластера на якому запущений драйвер.
SparkSQL
Крім методів об'єкта DataFrame з даними можна працювати за допомогою Spark SQL[6]. Для цього Spark може створити з DataFrame розріз даних (віртуальну таблицю). Це робиться викликом:
Після чого можна виконати запит в REPL, через метод sql об'єкта сесії:
spark.sql("SELECT ... FROM назва_таблиці ...")
RDD
API Apache Spark зосереджено навколо структури даних, яка називається пружні розподілені набори даних (англ.resilient distributed dataset, RDD), відмовостійкамультимножина елементів даних, яку можна лише читати, розподілена понад кластером машин.[12]
Вона була розроблена у відповідь на обмеження парадигми програмуванняMapReduce, яка нав'язує певну лінійну структуру потоку даних[en] для розподіленої програми: програми MapReduce читають вхідні дані з диска, застосовують до всіх даних map()[en], згортають[en] результати застосування map() і зберігають результат на диску. RDDs в Spark функціонують як working set[en] для розподілених програм, який надає обмежену (навмисне) форму розподіленої спільної пам'яті.[13]
Доступність RDD підтримує реалізацію як ітеративних алгоритмів, які звертаються до даних багато разів в циклі, так і інтерактивного розвідувального аналізу, тобто повторювані запити до даних як у СКБД. Затримка таких застосунків (порівняно з реалізаціями на MapReduce, які типові для стеку Apache Hadoop) може бути меншою на кілька порядків.[12][14]
До класу ітеративних алгоритмів входять тренувальні алгоритми систем машинного навчання, використання яких є першопричиною розробки Apache Spark.[15]
Spark Core
Spark Core це основа всього проєкту. Він надає диспетчеризацію задач, планування, та базовий ввід/вивід, які надаються через прикладний програмний інтерфейс (для Java, Python, Scala, та R) зосереджений навколо абстракції RDD (Java API доступне для інших мов JVM, але може також використовуватись деякими не-JVM мовами, такими як Julia,[16] які можуть приєднуватись до JVM). Цей інтерфейс мавпує функційну модель програмування вищого порядку: програма «драйвер» активує паралельні операції, такі як map, filter або reduce над RDD передаючи функцію Spark, який визначає графік виконання функції на кластері.[12] Ці операції, і додаткові, такі як Join-и, приймають RDD як вхідні дані та утворюють нові RDD. RDD незмінні, а операції над ними ліниві; стійкість до відмов забезпечується запам'ятовуванням походження кожного RDD (як послідовності операцій, якими його отримано), щоб у випадку втрати даних його можна було обчислити наново. RDD можуть містити будь-який тип об'єктів Python, Java, чи Scala.
Окрім функціонального стилю програмування з RDD, Spark надає два обмежені види спільних змінних: широкомовні змінні (англ.broadcast variables) стосуються даних лише для читання, які мають бути доступними на всіх вузлах, та акумулятори (англ.accumulators), які можна використовувати для програмування агрегації в імперативному стилі.[12]
Типовим прикладом функційного програмування, яке зосереджується на RDD є наступна програма на Scala яка обчислює частоти всіх слів, що зустрічаються в наборі текстових файлів і роздруковує ті, що трапляються найчастіше. Кожна map, flatMap (варіант map) та reduceByKey приймає анонімну функцію, що виконує просту операцію над одним елементом даних (або парою елементів), і використовує її щоб перетворити RDD в новий RDD.
valconf=newSparkConf().setAppName("wiki_test")// створити об'єкт конфігурації Sparkvalsc=newSparkContext(conf)// Створити spark contextvaldata=sc.textFile("/шлях/до/якоїсь директорії")// Прочитати файли з "якоїсь директорії" в RDD що складається з пар (назва файлу, вміст).valtokens=data.flatMap(_.split(" "))// Розділити кожен файл на список токенів (слів). valwordFreq=tokens.map((_,1)).reduceByKey(_+_)// Присвоїти кількість 1 кожному токену, а тоді підрахувати суми для кожного окремого слова.wordFreq.sortBy(s=>-s._2).map(x=>(x._2,x._1)).top(10)// Отримати найпопулярніші 10 слів. Переставити слово і частоту аби відсортувати за частотою.
Spark SQL
Компонент Spark SQL працює поверх Spark Core та забезпечує абстракцію над даними — DataFrames (її до виходу версії Spark 1.3 називали SchemaRDDs[17]), що надає підтримку структурованих та напівструктурованих даних[en]. Spark SQL надає предметно-орієнтовану мову (DSL) для маніпуляції датафреймами в Scala, Java, чи Python. Також додає підтримку мови SQL, з інтерфейсом командного рядка та ODBC/JDBC серверами. Хоча датафреймам бракує перевірки типів на етапі компіляції яка доступна для RDD, починаючи з Spark 2.0, Spark SQL також підтримує строго типізований DataSet.
importorg.apache.spark.sql.SQLContextvalurl="jdbc:mysql://yourIP:yourPort/test?user=yourUsername;password=yourPassword"// URL для сервера бази даних.valsqlContext=neworg.apache.spark.sql.SQLContext(sc)// Створити об'єкт sql контекстуvaldf=sqlContext.read.format("jdbc").option("url",url).option("dbtable","people").load()df.printSchema()// Показує схему DataFrame.valcountsByAge=df.groupBy("age").count()// Рахує кількість людей кожного віку
Spark Streaming
Spark Streaming використовує можливість швидкого планування Spark Core щоб здійснювати потокову аналітику. Він споживає дані в міні-пакетах і виконує RDD перетворення над тими міні-пакетами. Така схема дозволяє використовувати для потокової аналітики такий самий код що й для аналітики над пакетами даних, таким чином дозволяючи просту реалізацію лямбда-архітектури.[18][19] Проте, ця зручність оплачується затримкою яка дорівнює тривалості обробки міні-пакету. Існують інші рушії обробки потокових даних, які обробляють кожну подію окремо, а не в міні-пакетах, такі як Apache Storm[en] та потоковий компонент Apache Flink[en].[20] Spark Streaming має вбудовану можливість читання з Apache Kafka, Apache Flume[en], Twitter, ZeroMQ, Kinesis, та сокетів TCP/IP.[21]
Бібліотека машинного навчання MLlib
Spark MLlib — це розподілений фреймворк для машинного навчання побудований на основі Spark Core. Великою мірою завдяки розподіленій архітектурі Spark яка активно використовує оперативну пам'ять, вона в 9 разів швидша за рішення на основі дисків, які використовуються в Apache Mahout[en] (згідно тестів продуктивності здійснених розробниками MLlib над задачею програмування Alternating Least Squares (ALS), і до того як Mahout отримав інтерфейс до Spark), і масштабується краще за Vowpal Wabbit[en].[22] Багато типових статистичних алгоритмів та алгоритмів машинного навчання реалізовані і постачаються разом з MLlib що спрощує побудову великих пайплайнів машинного навчання, наприклад:
GraphX це розподілений фреймворк обробки графів на основі Apache Spark. Через те що він побудований на основі незмінних RDD, графи теж незмінні, тому GraphX непридатний для роботи з графами що оновлюються, тим більше транзакціями, як у графових базах даних.[24] GraphX надає два окремі API для реалізації масово паралельних алгоритмів (таких як PageRank): Pregel-подібне, та більш загальне — MapReduce API.[25] На відміну від попередника, Bagel, підтримка якого формально завершилась з версії 1.6, GraphX має повну підтримку графів з атрибутами (графів в яких до вершин та ребер можуть приєднуватись атрибути).[26]
GraphX можна розглядати як Spark-альтернативу Apache Giraph[en], який використовує дисковий MapReduce Hadoop.[27]
Як і Apache Spark, GraphX спершу розпочався як дослідницький проєкт AMPLab Берклі та Databricks, і пізніше був переданий в Apache Software Foundation в проєкт Spark.[28]
Інфраструктура
Сайт Spark Packages[29] станом на вересень 2017-го містить більш ніж 360 пакетів які розширюють функціональність Spark дозволяючи йому записувати та читати дані з різних джерел і форматів, містять реалізації різних алгоритмів машинного навчання та роботи з графами та інше.
Історія
Проєкт Spark був початий Матеєм Захарією AMPLab університету Берклі в 2009, а його код відкритий в 2010 під ліцензією BSD.
У 2013, проєкт був подарований Apache Software Foundation і змінив свою ліцензію на Apache 2.0. У лютому 2014, Spark став проєктом верхнього рівня в Apache Software Foundation.[30]
В листопаді 2014, компанія Databricks заснована Матеєм, встановила за допомогою Spark новий світовий рекорд з сортування великих обсягів даних.[31]
Spark мав понад 1000 учасників проєкту в 2015,[32] що зробило його одним з найактивніших проєктів в Apache Software Foundation[30] і одним з найактивніших проєктів великих даних з відкритим кодом.
Зважаючи на популярність платформи, такі платні програми як General Assembly[en] та безкоштовні товариства, такі як The Data Incubator[en] почали пропонувати спеціалізовані навчальні курси[33]
↑Doan, DuyHai (10 вересня 2014). Re: cassandra + spark / pyspark. Cassandra User (Список розсилки). Архів оригіналу за 30 травня 2015. Процитовано 21 листопада 2014.
↑ абвгZaharia, Matei; Chowdhury, Mosharaf; Franklin, Michael J.; Shenker, Scott; Stoica, Ion. Spark: Cluster Computing with Working Sets(PDF). USENIX Workshop on Hot Topics in Cloud Computing (HotCloud). Архів оригіналу(PDF) за 10 квітня 2016. Процитовано 15 вересня 2017.
↑Архівована копія. Архів оригіналу за 11 червня 2018. Процитовано 25 вересня 2017.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 8 жовтня 2017. Процитовано 7 жовтня 2017.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Shapira, Gwen (29 серпня 2014). Building Lambda Architecture with Spark Streaming. cloudera.com. Cloudera. Архів оригіналу за 14 червня 2016. Процитовано 17 червня 2016. re-use the same aggregates we wrote for our batch application on a real-time data stream
↑Kharbanda, Arush (17 березня 2015). Getting Data into Spark Streaming. sigmoid.com. Sigmoid (Sunnyvale, California IT product company). Архів оригіналу за 15 серпня 2016. Процитовано 7 липня 2016.
↑Malak, Michael (1 липня 2016). Spark GraphX in Action. Manning. с. 89. ISBN9781617292521. Архів оригіналу за 21 березня 2022. Процитовано 9 жовтня 2017. Pregel and its little sibling aggregateMessages() are the cornerstones of graph processing in GraphX. ... algorithms that require more flexibility for the terminating condition have to be implemented using aggregateMessages()
↑Malak, Michael (1 липня 2016). Spark GraphX in Action. Manning. с. 9. ISBN9781617292521. Архів оригіналу за 21 березня 2022. Процитовано 9 жовтня 2017. Giraph is limited to slow Hadoop Map/Reduce
↑Архівована копія. Архів оригіналу за 4 вересня 2017. Процитовано 11 вересня 2017.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
Life's TwistIklan kontemporer, awalnya diterbitkan dalam Film Daily.SutradaraChristy CabanneProduserBessie Barriscale ProductionsDitulis olehThomas Edgelow(cerita)Harvey Gates(skenario)PemeranBessie BarriscaleWalter McGrailKing BaggotSinematograferEugene GaudioDistributorRobertson-Cole Distributing CorporationTanggal rilis 11 Agustus 1920 (1920-08-11) Durasi6 rolNegaraAmerika SerikatBahasaBisu (intertitel Inggris) Life's Twist adalah sebuah film drama bisu Amerika Serikat tahun 1920 gara...
تحتاج هذه المقالة إلى الاستشهاد بمصادر إضافية لتحسين وثوقيتها. فضلاً ساهم في تطوير هذه المقالة بإضافة استشهادات من مصادر موثوق بها. من الممكن التشكيك بالمعلومات غير المنسوبة إلى مصدر وإزالتها. العلاقات الروسية العراقية العراق روسيا السفارات سفارة جمهورية ال...
For the company's founder, Lena Himmelstein Bryant (1879–1951), see Lena Himmelstein. American plus-size clothing retailer Lane Bryant Inc.Company typeSubsidiaryIndustryRetailFounded1904; 120 years ago (1904)FounderLena HimmelsteinHeadquartersNew Albany, Ohio, United StatesNumber of locations424 storesKey peopleLiz Edmiston, CEOProductsApparel, intimates and athleisureParentThe Limited (1982–1999)Charming Shoppes(2001-2012)Ascena Retail Group(2012–2020)Premium Apparel ...
Gaelic football event All-Ireland Minor Football Championship 2023Championship detailsDates5 April – 9 July 2023Teams31All-Ireland ChampionsWinning teamDerry (6th win)CaptainFionn McEldowneyManagerDamian McErleanAll-Ireland FinalistsLosing teamMonaghanCaptainMatthew CarolanManagerDermot MaloneProvincial ChampionsMunsterKerryLeinsterDublinUlsterDerryConnachtMayoChampionship statisticsNo. matches played76Goals total199 (2.61 per game)Points total1637 (21.53 per game)Top Scorer Max McGinnity (...
Kongresshalle, tempat dari Haus der Kulturen der Welt Haus der Kulturen der Welt (yang dalam bahasa Jerman berarti Rumah Kultur Dunia) adalah pusat nasional untuk seni kontemporer non-Eropa yang terletak di Berlin, Jerman. Di sini terdapat pameran seni, teater dan tarian, konser, pembacaan penulis, film dan konferensi akademis pada seni dan kultur non-Eropa. Bangunan ini terletak di taman Tiergarten dan dekat dengan Carillon dan Gedung Kanselir Jerman yang baru. Gedung ini dulu dikenal sebaga...
Artikel ini memberikan informasi dasar tentang topik kesehatan. Informasi dalam artikel ini hanya boleh digunakan untuk penjelasan ilmiah; bukan untuk diagnosis diri dan tidak dapat menggantikan diagnosis medis. Wikipedia tidak memberikan konsultasi medis. Jika Anda perlu bantuan atau hendak berobat, berkonsultasilah dengan tenaga kesehatan profesional. Tinitus adalah telinga berdering, berdesir, atau jenis suara yang tampaknya berasal di telinga atau kepala. Dalam banyak kasus itu bukan masa...
Dessert item served with tea Not to be confused with compressed tea. For other uses, see Teacake (disambiguation). TeacakeA toasted English teacake (right) shown with a mochaTypeSweet rollMain ingredientsFlour A teacake in England is generally a light yeast-based sweet bun containing dried fruit, typically served toasted and buttered.[1] In the U.S. teacakes can be cookies or small cakes. In Sweden, they are soft, round, flat wheat breads made with milk and a little sugar, and used to...
Carlo Janka Carlo Janka a Obersaxen nel 2009 con la medaglia d'oro vinta nello slalom gigante ai Mondiali di Val-d'Isère Nazionalità Svizzera Altezza 186 cm Peso 87 kg Sci alpino Specialità Discesa libera, supergigante, slalom gigante, combinata Squadra Obersaxen Termine carriera 2022 Palmarès Competizione Ori Argenti Bronzi Olimpiadi 1 0 0 Mondiali 1 0 1 Mondiali juniores 0 0 1 Trofeo Vittorie Coppa del Mondo 1 trofeo Coppa del Mondo - Combinata 1 trofeo Per maggiori dettagli vedi...
Clause abolishing the permanent army Memorial plaque of the Article in the National Museum The Article 12 of the Constitution of Costa Rica abolishes Costa Rica's army as a permanent institution, making Costa Rica one of the first countries in the world to do so as the current Constitution was enacted in 1949.[1] Costa Rica is one of the few countries without armed forces and, alongside Panama, one of the few that is not a microstate. However, like Panama, Costa Rica does have limited...
Навчально-науковий інститут інноваційних освітніх технологій Західноукраїнського національного університету Герб навчально-наукового інституту інноваційних освітніх технологій ЗУНУ Скорочена назва ННІІОТ ЗУНУ Основні дані Засновано 2013 Заклад Західноукраїнський �...
This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: 2007 Catalunya GP2 Series round – news · newspapers · books · scholar · JSTOR (December 2020) 2007 Spanish GP2 roundRound details Round 2 of 11 rounds in the 2007 GP2 Series Location Circuit de Catalunya, Montmeló, Catalonia, SpainCourse...
Ettrick Forest, previously a hunting reserve was opened up for settlement in this period The geography of Scotland in the early modern era covers all aspects of the land in Scotland, including physical and human, between the sixteenth century and the beginnings of the Agricultural Revolution and industrialisation in the eighteenth century. The defining factor in the geography of Scotland is the distinction between the Highlands and Islands in the north and west and the Lowlands in the south ...
هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (مارس 2023) 4 فتيات صغيرات4 Little Girls (بالإنجليزية) غلاف الفيلم دي في ديمعلومات عامةالصنف الفني فيلم وثائقي[2][3] — فيلم سيرة ذاتية — فلم مستقل[4][5][6] الموض...
Historical slang word for a French infantrymanThis article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Poilu – news · newspapers · books · scholar · JSTOR (July 2019) (Learn how and when to remove this message) You can help expand this article with text translated from the corresponding article in French. (May 2...
Defunct American computer peripheral manufacturer Apple Accessory Products DivisionFormer headquarters in Garden Grove, CaliforniaFormerlyThe Keyboard Company, Inc.Company typePrivateIndustryElectronicsFoundedMay 4, 1979; 45 years ago (1979-05-04) in Garden Grove, California, United StatesFounderMichael MullerDefunctAugust 28, 1985; 38 years ago (1985-08-28)FateAcquired by Alps ElectricProductsComputer keyboards, mice, joysticksNumber of employees661 (...
Bernard LaporteVice-Chairman of World RugbyIncumbentAssumed office 12 May 2020ChairmanBill BeaumontPreceded byAgustín PichotPresident of French Rugby FederationIn office3 December 2016 – 27 January 2023Preceded byPierre CamouSecretary of State for SportIn office22 October 2007 – 23 June 2009PresidentNicolas SarkozyPrime MinisterFrançois FillonMinisterRoselyne BachelotSucceeded byRama Yade Personal detailsBorn (1964-01-07) 7 January 1964 (age 60)Rodez, Aveyron...
Valira Le Valira à Sant Julià de Lòria Bassin collecteur de l'Èbre. Caractéristiques Longueur 44 km Bassin 591,6 km2 Bassin collecteur Èbre Débit moyen 10,8 m3/s (la Seu d'Urgell) Régime nival Cours Confluence le Sègre Géographie Pays traversés Andorre puis Espagne modifier La Valira est une rivière pyrénéenne, affluent droit du Sègre et sous-affluent de l'Èbre ; elle collecte les eaux de la principauté d'Andorre. Toponymie Article connexe : To...