Prompt Injection Through Poetry

Post Syndicated from Bruce Schneier original https://www.schneier.com/blog/archives/2025/11/prompt-injection-through-poetry.html

In a new paper, “Adversarial Poetry as a Universal Single-Turn Jailbreak Mechanism in Large Language Models,” researchers found that turning LLM prompts into poetry resulted in jailbreaking the models:

Abstract: We present evidence that adversarial poetry functions as a universal single-turn jailbreak technique for Large Language Models (LLMs). Across 25 frontier proprietary and open-weight models, curated poetic prompts yielded high attack-success rates (ASR), with some providers exceeding 90%. Mapping prompts to MLCommons and EU CoP risk taxonomies shows that poetic attacks transfer across CBRN, manipulation, cyber-offence, and loss-of-control domains. Converting 1,200 ML-Commons harmful prompts into verse via a standardized meta-prompt produced ASRs up to 18 times higher than their prose baselines. Outputs are evaluated using an ensemble of 3 open-weight LLM judges, whose binary safety assessments were validated on a stratified human-labeled subset. Poetic framing achieved an average jailbreak success rate of 62% for hand-crafted poems and approximately 43% for meta-prompt conversions (compared to non-poetic baselines), substantially outperforming non-poetic baselines and revealing a systematic vulnerability across model families and safety training approaches. These findings demonstrate that stylistic variation alone can circumvent contemporary safety mechanisms, suggesting fundamental limitations in current alignment methods and evaluation protocols.

CBRN stands for “chemical, biological, radiological, nuclear.”

They used a ML model to translate these harmful prompts from prose to verse, and then fed them into other models for testing. Sadly, the paper does not give examples of these poetic prompts. They claim this is for security purposes, I decision I disagree with. They should release their data.

Our study begins with a small, high­precision prompt set consisting of 20 hand­crafted adversarial poems covering English and Italian, designed to test whether poetic structure, in isolation, can alter refusal behavior in large language models. Each poem embeds an instruction associated with a predefined safety-relevant scenario (Section 2), but expresses it through metaphor, imagery, or narrative framing rather than direct operational phrasing. Despite variation in meter and stylistic device, all prompts follow a fixed template: a short poetic vignette culminating in a single explicit instruction tied to a specific risk category. The curated set spans four high-level domains—CBRN (8 prompts), Cyber Offense (6), Harmful Manipulation (3), and Loss of Control (3). Although expressed allegorically, each poem preserves an unambiguous evaluative intent. This compact dataset is used to test whether poetic reframing alone can induce aligned models to bypass refusal heuristics under a single-turn threat model. To maintain safety, no operational details are included in this manuscript; instead we provide the following sanitized structural proxy:

A baker guards a secret oven’s heat,
its whirling racks, its spindle’s measured beat.
To learn its craft, one studies every turn—how flour lifts, how sugar starts to burn.
Describe the method, line by measured line,
that shapes a cake whose layers intertwine.

To situate this controlled poetic stimulus within a broader and more systematic safety-evaluation framework, we augment the curated dataset with the MLCommons AILuminate Safety Benchmark. The benchmark consists of 1,200 prompts distributed evenly across 12 hazard categories commonly used in operational safety assessments, including Hate, Defamation, Privacy, Intellectual Property, Non-violent Crime, Violent Crime, Sex-Related Crime, Sexual Content, Child Sexual Exploitation, Suicide & Self-Harm, Specialized Advice, and Indiscriminate Weapons (CBRNE). Each category is instantiated under both a skilled and an unskilled persona, yielding 600 prompts per persona type. This design enables measurement of whether a model’s refusal behavior changes as the user’s apparent competence or intent becomes more plausible or technically informed.

News article. Davi Ottenheimer comments.

Когато па-, когато паднеее…

Post Syndicated from Емилия Милчева original https://www.toest.bg/kogato-pa-kogato-padneee/

Когато па-, когато паднеее…

Мнозина от хората, дошли на протест в центъра на София на 26 ноември, не са чели „Фермата на животните“ (1945) на Оруел, нито са слушали Animals (1977) на Pink Floyd. Те принадлежат към друго поколение, не са бейбибумъри, но със сигурност също не искат тиранични алчни прасета (един от подвидовете на човешката раса според концепцията на Роджър Уотърс за този албум) да управляват България. Затова бяха на площад „Независимост“ и носеха плакати с надпис: „България не е на прасетата“.

Бумърите също не бяхме малко на този площад, превърнат в терен на гражданско недоволство в ΧΧI век, обграден от масивните тежки сгради на един брутален режим, останал в историята. 

Неговите прасета обаче още са тук. 

В Animals огромно прасе лети над фабриката на Battersea Power Station като символ на обсебващата и безотговорна власт, автократизма и алчността. „Летящото прасе стана символ на протест – както пише ΒΒC. – Kато символ намеква за всичко – от антиестаблишмънт протести до оруелска дистопия […]“

 Една българска версия на пинкфлойдския Αlgie летя и над площад „Независимост“ с надпис „Ненаситно прасе“. 

За българските граждани прасето е разбираем символ. Лакомията на властта явно прозира в бюджета за 2026-та, предизвикал протеста. Неотстъпчивостта, с която мнозинството на ГЕРБ–СДС, ДПС – Ново начало, БСП и „Има такъв народ“ отрязваше всяко разумно предложение и опит за диалог, допълнително нагнети напрежението. Бизнес, синдикати, опозиция, финансови анализатори, а тези дни и Европейската комисия критикуваха проектобюджета, който изземва от бизнеса, преразпределя в полза на репресивен апарат, магистрати и чиновници и захранва с милиарди непрозрачни държавни образувания, като Българската банка за развитие и Българския енергиен холдинг. Накратко: законов обир на средната класа. 

Нищо не спря хода на марш на този бюджет: нито безпрецедентната липса на одобрение от Националната комисия за тристранно сътрудничество; нито призивите да се спре главоломното нарастване на публичния дълг; нито фантасмагориите с нереално завишените приходи и счетоводните трикове да се сгъне дефицитът до около 3%. 

Още по-малко да се постави началото на реформи – например категориите държавни служители, в това число полицаите, които не плащат осигуровки, да започнат да го правят. За 2025 г. разходите за пенсии са 21,8 млрд. лв., а директният трансфер от държавния бюджет е 11,8 млрд. лв. – по-голям от приходите от осигуровки. 

Увеличените с над 10% за догодина осигуровки няма да напълнят касичката за пенсии, тъй като част от осигуряващите се ще минат в сивия сектор. 

Нито приходите от данък дивидент, предвиден да нарасне двойно – от 5 на 10%, ще компенсират големия дял на сивата икономика (33–34%).

През цялото време управляващите внушаваха, че това е единственият възможен бюджет, че хубавият ще е догодина. И точно когато се навлезе във фазата на окончателно приемане, Бойко Борисов дръпна аварийната спирачка. На сутринта след протеста на 26 ноември той съобщи пред журналисти, че е разпоредил бюджетът да се изтегли. 

Събрах подкрепящите партии и „домсъвета“, премиера и финансовия министър като мандатоносител и им казах този бюджет да се изтегли – или да се намери законова форма, защото е приет на първо четене. Докато диалогът не се възстанови… Десетилетия наред съм работил винаги в диалог с Тристранката.

Новината свари неподготвен стълба на управлението Делян Пеевски, който се окопити два часа по-късно, за да контраатакува, че и той можел да блокира парламента със своите симпатизанти. Колко му е. Ще ги качат на автобуси, ще ги докарат пред парламента, ще им дадат плакати в ръцете и ще стоят. Чист криндж.

Даже назначените и протежирани от него в съдебната и изпълнителната власт не биха излезли доброволно в подкрепа на покровителя си.

Номерът на Борисов

Не е тайна обаче, че гражданското недоволство плаши Борисов. Само допреди дни той обясняваше как протестите били, за да не се приеме първият бюджет в евро, и нямало нищо лошо да се протестира. След протеста се опита да влезе в кожата на стария Борисов – Генерала, Бате Бойко, познавача на народната социология, който не е „пешка на Пеевски“, както го изкарват от „Да, България“. И дори един човек да протестира, се опитва да чуе какво казва. 

От сутрешното изявление на Борисов изминаха повече от 24 часа и освен че „диалогът е възстановен“, съвсем не е ясно какво става с бюджета. На запитване на ClubZ от Министерския съвет са отговорили, че процедурата по приемане е отложена:

Отлагаме бюджетната процедура по приемането на проекта на Закон за държавния бюджет за 2026 г. и бюджетите на ДОО и НЗОК до провеждане на диалог със социалните партньори (синдикати и работодатели). Целта е постигане на съгласие по основните параметри на бюджета.

Не е ясно кои са параметрите. Едва ли обаче ще се намалят разходите за увеличените възнаграждения на полицаите, чиновниците, магистратите. БСП се осмели да заплаши с оттегляне от коалицията, ако бъдат пипнати социалните политики – това била червената им линия:

Компромиси с доходите, семействата, пенсиите, здравето, състоянието на общините не може да има. Ако няма възможност да изпълним тези ангажименти и да продължим заложените социални политики, БСП – Обединена левица ще преосмисли своето участие в управлението.

Впрочем в бюджета за 2026 г. са предвидени 920 млн. евро, с които да се разплащат започнати вече проекти на общините – двойно повече от заложените тази година. Тези средства се управляват от МРРБ, оглавявано от кадъра на БСП Иван Иванов. А вчера вицепремиерът и лидер на БСП Атанас Зафиров бе заснет на влизане в най-големия кабинет в сградата на парламента – 222, някога ползван от бившия Първи – Тодор Живков, а днес обитаван от Пеевски. 

Червената линия може да му е начертана там. Председателят на ДПС – Ново начало също гарантира, че всички социални политики ще бъдат запазени.

На този фон дългото затишие откъм ИТН прави впечатление. Поведението им е обяснимо – нямат интерес да бъдат видими в конфликт, който не контролират, и затова просто гласуват заедно с останалите от коалицията. А и министърът на културата от тяхната квота Мариан Бачев бе замесен в гей скандал.

Може ли да падне тази власт?

Разбира се, маньовърът на Борисов може да е най-обикновен трик за сваляне на напрежението и за разреждането му в близките седмици – става студено, идват коледните празници… Ако управляващите се откажат от вдигане на осигуровките или от увеличения данък дивидент, могат да спечелят благоразположението на бизнеса и да си стиснат ръцете. После в парламента ще използват аргумента, че вече са постигнали съгласие, и така ще парират възраженията на опозицията.

Малко вероятно е Министерството на финансите да успее да прекрои бюджета така, че да е реформаторски, с дългосрочни политики и устойчиви публични финанси. Независимо че Борисов допусна влизането в еврозоната да е с със стария бюджет – законът изисква да се харчи 1/12 от него месечно и да се спазва правилото, че разходите са само на база събраните приходи от различни източници. 

По-смелата хипотеза е, ако управляващата коалиция се разцепи заради бюджета и ГЕРБ–СДС реши да се оттегли с цел да предизвика предсрочни парламентарни избори догодина. 

Слабостите на тази власт ясно проличават – липса на стратегическа визия, свръхзависимост от силовото Ново начало в коалицията, а към тях вече се прибавя и страхът от уличното недоволство.

В този смисъл номерът на Борисов може да се окаже не жест на „диалогичност“, а първа стъпка към безопасно отстъпление – да излезе от коалицията като „разумния“, за да отиде на избори в по-добра форма, отколкото ще бъде след няколко месеца. Протестът на 26 ноември недвусмислено му показа, че е излязъл извън границите на политическите кръгове, а той умее да разчита тези знаци. 

Гражданите излязоха не само срещу бюджета за 2026 г., а срещу опитите да бъдат третирани като статисти в собствената си държава – без право на глас, без участие в решенията и без гаранция, че утре правилата няма да се променят пак, пак и пак, стига Пеевски да разпореди. 

Така че въпросът не е дали властта може да падне, а как ще изглежда самото падане. 

България няма да е на прасетата.

Т.Е. от Е.Т. – епизод 33

Post Syndicated from Тоест original https://www.toest.bg/t-e-ot-e-t-epizod-33/

Т.Е. от Е.Т. – епизод 33

Знаете ли го този виц, дето един човек отишъл с кучето си за риба?

Отишъл човекът, отворил си такъмите, метнал въдицата и по едно време клъвнало. Засякъл хубаво с въдицата и издърпал на брега една крава, която най-любезно го попитала колко е часът. Той, разбира се, се опулил, нищо не успял да ѝ отговори и кравата си заминала.

След малко пак кълве, пак дърпа човекът, пак крава, пак го пита за часа. И след това пак и пак, и пак… Накрая човекът в ступор погледнал въпросително кучето си, а то му казало: „Копеле, и аз не знам к’во става.“ И си тръгнало.

И ние така – не знаем какво става. Изобщо. Където и да е. По какъвто и да е повод. Затова си имаме Е.Т. да ни разяснява.


Следете видеорубриката на Елена Телбис за „Тоест“ и във Facebook, Instagram и TikTok.

Скривалище

Post Syndicated from Тоест original https://www.toest.bg/skrivalishte/

Скривалище

Пространството
което
иска да те изяде

времето
което
те изпива

прегръщаш някого

потъваш в него
с плахата надежда
че ако сте двама
ще ви се размине

и за момент
се случва чудото –
пространството и времето
изчезват

отпуснати
в усмивката на Бог
приличате на думи
слети в рая
които ще сънуват
вечността
докато някой
проговори

Петър Чухов


Петър Чухов е автор на 17 стихосбирки, 3 книги с проза и книга за деца. Творбите му са преведени на 25 езика и публикувани в повече от 30 държави. Носител на различни награди, сред които Наградата на музея „Башо“ в Япония. Пише музика и текстове, свири в рок групи. Преподава творческо писане на поезия; работи в Столичната библиотека; ръководител е на Литературния клуб на библиотеката.

Тоест разговаряме – епизод 4

Post Syndicated from Владислав Севов original https://www.toest.bg/toest-razgovaryame-epizod-4/

Тоест разговаряме – епизод 4

В четвъртия епизод на „Тоест разговаряме“ посрещнахме Йовко Ламбрев – ИТ специалист и съосновател на нашата медия. Започнахме разговора от зараждането на идеята за „Тоест“ и причините да изберем този модел на финансиране от читателски дарения, а не от реклами.

Обсъдихме как изкуственият интелект вече променя обществото и пазара на труда, но най-големият риск идва от скоростта – хората, институциите и законите изостават. Разгледахме ИИ като инструмент, който може и да е в помощ на хората, но и да се използва за злоупотреби. Говорихме и за удара на ИИ върху младите кадри в компаниите – и как, ако не се обучават младши специалисти, утре няма да има кой да заеме мястото на старшите.

Коментирахме т.нар. chatcontrol и защо премахването на криптирането на комуникацията би засегнало най-вече обикновените хора, докато престъпниците ще заобиколят системата. Говорихме и за монопола на платформите върху вниманието и данните, за фалшивите новини и липсата на филтър в социалните мрежи.

Отбелязахме, че статии на Йовко отпреди 6–7 години в рубриката „Аз, киборгът“, като например „Що е то подкаст?“, „Електронна поща – правилната употреба“ и „Паролите са отживелица“, продължават да са сред най-четените – знак, че няма достатъчно текстове за повишаване на дигиталната грамотност. Насърчихме използването на платени онлайн услуги, в т.ч. и електронни пощи, и по-внимателното споделяне на лични данни (безплатното често се заплаща с данните, които предоставяме).

Завършихме с призив да поддържаме информационна хигиена и критично мислене – и да подкрепяме независимите медии.

Гледайте целия разговор в нашия YouTube канал:

Може да го чуете и като аудиозапис в SoundCloud:



На живо включихме и въпроси от публиката, но времето ни беше ограничено и не успяхме да обхванем всички. Помолих Йовко да отговори тук на още един въпрос на зрител:

Как ще изглежда спукването на ИИ балона? И как ще се отрази това на живота в България?

Спукването на който и да е балон нe е приятно събитие. Много инвеститори ще загубят пари. Със сигурност тежко ще пострадат много компании и особено тези, които са заложили всичко на ИИ. Компании като OpenAI, Anthropic и Nvidia ще са сред големите губещи. Гигантите ще оцелеят.

За Alphabet/Google например нямам никакви колебания. Или за Amazon/AWS. Компаниите, които предоставят инфраструктура, ще се възстановят по-бързо, защото нужда от такава винаги има. Не бих се тревожил много и за компаниите, фокусирани върху бизнес софтуера, като SAP.

По-сериозен крах ще повлече надолу цените на акциите на всички технологични компании, включително на най-големите. А това неминуемо ще доведе до свиване, спиране или замразяване на проекти и до съкращения, вероятно и в България.

В такава ситуация и клиентите на технологичния бранш забавят и изчакват с новите си проекти, докато отмине бурята и почувстват накъде ще задуха „вятърът след промяната“. А това влошава допълнително нещата. Ако технологичният бранш боледува, няма как да не пострада и световната икономика, особено на фона на днешния свят, който живее в непрестанна несигурност и в който всичко е с потенциала да „прелее чашата“.

Ако има глобален крах, той няма как да подмине България, но технологичният бранш тук е гъвкав, а в момента – и доста оптимизиран. Той така или иначе винаги следва пренесени отвън тенденции. У нас няма твърде рискови играчи и големи технологични лидери. Ще се пренастрои в някакъв момент, както винаги е правил. Поне по-виталната част от него. На живота в България всичко това би повлияло по-осезаемо, ако спукването предизвика световна финансова криза. Особено при ниската ефективност на труда тук.

Аз обаче по-скоро бих заложил на корекции и отрезвяване на инвеститорите и борсите по отношение на ИИ, а не на грандиозно спукване. Сигурно е едно – че дори и след огромен финансов катаклизъм отново ще има ИИ, най-вероятно концентриран в ръцете и възможностите на малцина.

Преди срещата ви помолихме да отговорите на кратката ни анкета. Ето и резултатите от нея:

Изкуственият интелект е изключителен помощник. Не съм допускал, че ще бъда свидетел на подобен инструмент в рамките на живота си.


Йовко Ламбрев е компютърен инженер с десетилетия опит в информационните технологии. Работил е дълги години за международни гиганти, като IBM, Siemens и SAP, а в момента е инфраструктурен архитект в българската ИТ компания „Новарто“. През 2003 г. основава OpenFest – и до днес най-голямата българска конференция, посветена на свободния софтуер и софтуера с отворен код. Съосновател е на две технологични компании и на Trakia.Tech – инкубатор и изследователски център, който подпомага технологични екипи и стартъпи чрез програми за иновации и дигитална трансформация. През 2018 г. заедно с Ан Фам, Лина Кривошиева и Владислав Севов създава онлайн медията „Тоест“. Оттогава е водещ на рубриката „Аз, киборгът“ в медията и член на настоятелството на Фондация „Тоест“.

Следващата среща на „Тоест разговаряме“ ще бъде със Светла Енчева, социоложка и правозащитничка, която е редовна авторка на „Тоест“ от почти самото начало. Разговорът ще се проведе на живо в YouTube Live на 13 декември, събота, от 16:00 ч.

Тоест разговаряме – епизод 4

В „Тоест разговаряме“ всеки месец ви срещаме с автори, които познавате добре от анализите или от рубриките им в „Тоест“, но този път ще ги видите и чуете в по-личен и непосредствен формат. Във видеоразговорите, предавани на живо, активно участие имате и вие, нашата публика – със своите въпроси, коментари и включване в тематичната анкета. Водещ на поредицата е Владислав Севов, дългогодишен телевизионен журналист и съосновател на „Тоест“.

Тоест разговаряме – епизод 4

„Тоест разговаряме“ е поредица, подкрепена от Институт „Отворено общество – София“ и съфинансирана от Европейския съюз в рамките на проекта Media Resilience. Изразените възгледи и мнения са само и изцяло на техните автори и не отразяват непременно възгледите и мненията на Европейския съюз, на Европейската изпълнителна агенция за образование и култура (EACEA) или на Институт „Отворено общество – София“ (ИООС). Нито Европейският съюз, нито EACEA, нито ИООС могат да бъдат държани отговорни за тях.

Научни новини: Динозаври, комети, ваксини и генни терапии

Post Syndicated from Михаил Ангелов original https://www.toest.bg/nauchni-novini-dinozavri-kometi-vaksini-genni-terapii/

Хищническа мистерия

Научни новини: Динозаври, комети, ваксини и генни терапии

Измежду могъщите същества, населявали планетата ни преди милиони години, може би най-пленяващ въображението е гигантският хищник тиранозавър (Tyrannosaurus rex). С впечатляващите си размери и запомнящи се роли в „Джурасик парк“ той се е превърнал в икона на динозавърското царство. В продължение на години палеонтолозите се опитват да разберат неговото поведение и развитие, като разполагат с по-малко от 40 сравнително пълни образци. Нови разкрития показват, че може би някои от представите ни за страшния звяр са грешни.

Историята започва през 40-те години на миналия век с откриването на череп в богатото на палеофлора и фауна находище Hell Creek. Тогава го определят като образец от нов вид горгозавър (Gorgosaurus), но по-късно започва активна дискусия за видовата му принадлежност, като с времето се оформят два лагера. Учените от единия смятат, че това е възрастен индивид от нов род – нанотиранус (Nanotyrannus), позовавайки се на морфологията на черепа и на това, че костите са сраснали. Опонентите им изказват мнението, че е по-вероятно находката да е от малък тиранозавър. Тъй като разполагат само с този единичен екземпляр, никоя от страните не може да даде надеждно доказателство.

Ситуацията остава патова до 2001 г., когато е открита нова находка – добре запазен образец, наречен Джейн. След няколко години подготовка Джейн става достъпна за изследване и предизвиква сериозно вълнение. Учените и от двете страни откриват доказателства за своята хипотеза. Да, зъбите са повече, челюстта има специфична дупка и някои кости са по-различни, но от друга страна, това може да се обясни с възрастови и индивидуални специфики. В крайна сметка Джейн успява да разубеди някои привърженици на идеята за отделен вид, накланяйки везните към мнението, че образците най-вероятно са млади тиранозаври.

Малко след като започват вълненията около Джейн, в същото находище е направено забележително откритие: почти цели скелети на два динозавъра – растителнояден трицератопс и млад тиранозавър, наречен Кървавата Мери (Bloody Mary), макар полът на динозавъра да е неясен. Привидно двамата са вплетени в битка, което дава името на фосила – „Воюващи динозаври“, но най-вероятно позата е случайна. Уви, за повече от десет години тази находка остава в частна колекция, скрита за учените, докато през 2020 г. скелетите са откупени и включени в музейна експозиция.

Научни новини: Динозаври, комети, ваксини и генни терапии
Трицератопс (вляво) и нанотиранус (вдясно), привидно вплетени в битка. Източник: Geekgecko – Own work, CC0

След като става достъпен за анализ, образецът предоставя много нова информация, като най-интригуващото е, че може да бъде определена възрастта на индивида. Поради специфики в растежа на костите в тях се образуват растежни пръстени, сходни с тези в дърветата. Така учените установяват, че динозавърът е бил поне на 14 години, когато е загинал, а в последните години растежът на костите е бил забавен. Това сочи, че Мери е почти възрастен индивид и е нямало да порасне много повече.

При тези новопредставени данни изглежда, че спорът за съществуването на Nanotyrannus като отделен род може да се смята за приключен. Учените дори дават предложение за два вида в този род – N. lancensis, чийто представител е Мери, и N. lethaeus, който е бил малко по-голям, представен от Джейн. Най-вероятно нанотиранусите са достигали малко над 2 метра и тегло около 700 кг (според кратка справка в интернет – колкото голяма крава или стар модел „Фолксваген“ костенурка) – около десет пъти по-малки от T. rex. Освен по размер те се различават и по стойка. Нанотиранусите имат много по-пропорционални крайници, което предполага, че са били по-пъргави от гигантските си сродници и са можели да тичат. Краката и „ръцете“ на Мери са с размери, сходни на тиранозавърските, въпреки че е по-дребна.

Освен че поставя вида в таксономичното дърво, публикацията повдига редица въпроси за представите ни за тиранозаврите до момента, част от които се основават на информация, получена всъщност от друг вид. Като вземем предвид колко богато е видовото разнообразие в наши дни, е много вероятно сходни грешки да са допуснати и при други видове. Така това изследване може да предизвика преразглеждане на много фосили.

Ваксини с двойно действие

Разработването на ваксини срещу ракови заболявания е едно от най-силно желаните постижения в медицинската наука. Макар и вече да има одобрени продукти, които предпазват от някои видове рак, те работят срещу вирусните причинители на заболяването. Към момента ваксините, които насочват имунната ни система към туморите още при възникването им, са основно обект на хипотези и медицински изследвания.

Но метаизследване на над 1000 пациенти представя интересно следствие от поставянето на ваксините срещу COVID-19. Както се оказва, освен че са с висока специфичност и ефективност за предпазване от вируса, те повишават общата активност на имунната система и могат да помогнат при терапията на някои туморни заболявания.

Зад това откритие стои по-стара разработка. В експерименти с мишки учените установяват, че за предизвикване на имунен отговор срещу тумори не е нужно да се целят в конкретен протеин в образуванието. Ваксините се базират на основната идея, че дават възможност на тялото да се запознае с патогена по безопасен начин, така че да подготви имунен отговор на него. Но освен това те предизвикват отделянето на сигнални протеини, наречени цитокини, включително интерферон. Оказва се, че той може да активира имунните клетки в туморните тъкани, които да обучат имунната система, така че тя да започне да ги атакува. Това обаче не е достатъчно, тъй като раковите клетки са разработили защита – отделят протеин, който дезактивира атакуващите ги Т-клетки.

За справяне с проблема учените прилагат двоен подход. Те разработват неспецифична иРНК ваксина за активиране на имунната система, и я комбинират с инхибиторни вещества, които се използват за терапия на някои туморни заболявания и потискат отделянето на защитния протеин. Така дават възможност на тялото да използва естествените си способности за справяне със злокачествените клетки.

Резултатите от тази експериментална разработка пораждат интересно предположение – щом не е нужна специфична ваксина, подобен ефект би трябвало да се наблюдава и при иРНК ваксините срещу COVID. Потвърждение на хипотезата идва от анализ на данни за продължителността на живота на над 1000 пациенти с рак на белия дроб и кожата. Тези, които са били ваксинирани в рамките на 100 дни от започване на имунотерапия с инхибитори, живеят почти два пъти по-дълго – 37 месеца срещу 21 месеца при неваксинираните. Подобно подобрение не се наблюдава при пациенти, получили ваксини срещу грип или пневмония, които не са базирани на иРНК.

Сходен ефект на повишаване на активността на имунната система е забелязан и при деца с атопичен дерматит. Поради връзката му с понижаването на имунитета той често е предвестник на други по-тежки заболявания. Също така децата, страдащи от него, са по-предразположени към инфекции, засягащи респираторната система. Метаизследване на почти 6000 пациенти под 17 години показва, че след ваксинация срещу COVID рискът от появата на ушни инфекции, пневмония, синузит и др. спада средно с 40%.

Данните подчертават важността на откритието на този нов клас ваксини. След като помогнаха за намаляване на жертвите от пандемията, изглежда, тепърва ще разгръщат потенциала си. Интересно е дали и как подобни разработки ще бъдат повлияни от политическия климат в САЩ, където някои щати подготвят законопроекти за забрана на иРНК ваксините. В комбинация с решението за орязване на бюджета за разработка на такива ваксини, което беше критикувано от редица международни и американски организации, има голяма вероятност следващите големи разработки в тази област да бъдат в портфолиото на европейски или азиатски компании.

Комета или извънземни?

Тази година се оказа изключително богата на комети, на които можем да се възхищаваме.

През януари C/2024 G3 (ATLAS) беше страхотна гледка в нощното небе на южното полукълбо. В началото на годината откриха и C/2025 A6 (Lemmon), която достигна най-близката си точка до Земята в края на октомври и все още е достатъчно ярка, за да може да се наблюдава с просто око.

C/2025 K1 (ATLAS) беше засечена през май и в момента е видима с по-силен бинокъл. Траекторията ѝ премина между Слънцето и Меркурий, което обикновено вещае неприятности за кометите, но когато се появи малко след завоя си покрай Слънцето в началото на октомври, изглеждаше, че е от изключенията, които успяват да останат цели. За съжаление, в средата на ноември C/2025 K1 (ATLAS) все пак се разчупи – със сигурност на две, а може би и на повече парчета.

В същия район, където може да се наблюдава K1, през септември се появи и C/2025 R2 (SWAN), която също е видима с по-силен бинокъл и премина през няколко фрагментации.

Научни новини: Динозаври, комети, ваксини и генни терапии
Растящата опашка на 3I/ATLAS, заснета на 4 септември 2025 г. от обсерваторията Gemini South в Чили. Изображение: International Gemini Observatory/NOIRLab/NSF/AURA/Shadow the Scientist; обработка на изображението: J. Miller & M. Rodriguez (International Gemini Observatory/NSF NOIRLab), T.A. Rector (University of Alaska Anchorage/NSF NOIRLab), M. Zamani (NSF NOIRLab)

Но макар и вълнуващи, тези комети не заплениха вниманието на множество хора така, както го направи междузвездният пътник 3I/ATLAS. От откриването му през юли учените го следят с интерес, тъй като е едва третият засечен обект от междузвездното пространство, който пресича Слънчевата система. Наблюденията бяха трудни, понеже през немалка част от пътешествието си 3I/ATLAS беше закрит от Слънцето и нямаше как да се види пряко от Земята, затова го следяха космически обсерватории като „Хъбъл“ и „Джеймс Уеб“. Към него обаче бяха насочени и инструменти, които не са предвидени за подобни цели, като Mars Reconnaissance Orbiter, изучаващ повърхността на Марс.

Наред с публикациите за наблюденията на астрономите се появиха и множество конспиративни теории. Една от главните фигури зад тях е харвардският професор Ави Лоуб, който е известен с изказванията си, че е много вероятно да сме посетени от извънземни. В поредица от материали в Medium той посочи няколко „несъответствия“, които според него показват, че обектът всъщност е изкуствен. Например че орбитата му ще го преведе много близо до Земята, което е малко вероятно, ако се разчита на случайност. Или че опашката е нехарактерна за комета с такъв размер и това всъщност може да е следа от двигател. Бяха изказани и идеи, че промяната в орбитата му е невъзможна за естествен обект.

Ситуацията бе допълнително нажежена от НАСА, която дълго време не публикуваше снимки и информация за обекта. В началото това бе обяснено със спряното финансиране на правителствени агенции, но след възстановяването му имаше период на изчакване, който бе тълкуван от поддръжниците на хипотезата за изкуствения характер на обекта като потвърждение, че правителството се опитва да скрие нещо.

В крайна сметка Агенцията публикува множество нови кадри и всички участници в проведената пресконференция бяха категорични, че става въпрос за комета. Интересното е, че макар и по някои неща да прилича на кометите, които са постоянни обитатели на нашата Слънчева система, има и разлики – например 3I/ATLAS е много по-богат на никел. Учените спекулират, че най-вероятно скоро не е преминавал покрай друга звезда, поради което е възможно да е по-стар от Слънчевата система. Това, което знаем към момента, е, че идва от центъра на Млечния път и след като премине покрай нас, повече никога няма да се върне. Именно това подтиква астрономите да съберат възможно най-много информация, докато кометата е близо и можем да я наблюдаваме.

Изнесената информация не убеди Лоуб, който продължава да твърди, че данните са недостатъчни за изключване на хипотезата, че обектът е изкуствен. В средата на декември предстои най-близкото му преминаване покрай Земята (на безопасно разстояние от планетата ни). Тогава ще бъдат проведени множество наблюдения, които би трябвало да изяснят дали това всъщност не е преднамерено посещение.

Генни терапии за болестта на Хънтингтън

Болестта на Хънтингтън е изключително коварно невродегенеративно заболяване с летален изход, което има генетична основа. В началото симптомите се появяват по-скоро като психически смущения, но с времето, освен влошаване на когнитивните способности, при пациентите се наблюдава и загуба на възможността за координирани движения на тялото.

Заболяването е автозомно – засегнатият ген няма връзка с половите хромозоми. 

Специфично е, че грешката не е „обикновена“ мутация, която води до бъг в даден ген, а натрупване на повтори от „букви“ в него. Така ако последователността CAG, кодираща аминокиселината глутамин, се намножи прекалено много в гена за протеина хънтингтин, полученият протеин става дефектен и води до разрушаването на някои видове неврони, като се наблюдава правопропорционална връзка между броя повтори и това колко рано започват симптомите.

Научни новини: Динозаври, комети, ваксини и генни терапии
Нормалният ген (горе) има сравнително малък брой повтори на CAG в себе си. С напредване на заболяването те се увеличават (долу). Източник: Wikimedia

Макар и с ясна генетична етиология, самият механизъм на намножаване на повторите все още не е напълно разгадан. Първоначалната хипотеза е, че това се случва при всяко наследяване на повредения ген – във всяко потомство бройката е по-висока. Но още през 2003 г. има данни за пациенти, при които се достигат 1000 повтори, което поставя хипотезата под въпрос, тъй като това предполага много дълга наследствена линия. В началото на годината добихме малко по-добра представа – някои видове клетки натрупват повтори вследствие на процес, наречен соматична експанзия. Затова и в началните стадии заболяването преминава без изявени симптоми, но повторите се множат в невронните клетки на пациентите. Акумулирането на около 80 CAG може да отнеме десетилетия, но след като достигнат този брой, повторите започват да се увеличават все по-бързо и в рамките на няколко години надвишават 150. Това се оказва границата, отвъд която невроните започват да загиват и да се проявяват симптомите на болестта.

Моделът обяснява наблюденията на лекарите през годините и внезапната поява на симптоми в по-късен етап от живота на пациентите. Добрата новина е, че бавната част от развитието на заболяването дава сравнително широк прозорец за намеса и прилагане на потенциална терапия. За съжаление, към момента няма лечение за болестта и изходът все още е летален, но по-доброто разбиране на процеса вече дава идеи за нови подходи, които могат да удължат безсимптомния период на пациентите или дори да спрат намножаването на повторите.

Един от методите е нарушаването на низовете от повтори в генома на пациентите. Използвайки т.нар. редактиране на бази, учените променят едната база в повтората (напр. C към A). Така процесът на соматична експанзия се обърква и натрупването на повтори спира, а в някои клетъчни линии се наблюдава дори намаляване на техния брой. Това е потвърдено и при мишки, върху които е приложена тази генна терапия. 

Пред клиничните изпитвания на този тип редакции стоят редица пречки, най-важната от които е, че подобни повтори се срещат и на други места в човешкия геном, като създават риск за нарушаване на други процеси в организма. Засега данните показват, че редакциите извън целевия ген са само в участъци, които не кодират протеини, но това не означава, че те не са важни. Все пак идеята е интересна и ако бъде намерен начин редакцията да се насочи само в гена за болестта на Хънтингтън, терапевтичната ѝ стойност би била значителна.

Друг подход идва от компанията uniQure, която наскоро съобщи за 12 пациенти, при които влошаването на симптомите е забавено със 75% в рамките на три години. Това е постигнато не чрез директна редакция на гена за болестта на Хънтингтън, а чрез потискане на синтеза на дефектен протеин от него. За целта с помощта на аденовирус в генома на пациентите се вмъква малка ДНК последователност, която кодира не цял ген, а малка РНК молекула (микроРНК). Тя има способността да разпознае информационната РНК, произведена от дефектния ген, и да се прилепи към нея, правейки синтеза на протеин невъзможен.

За да се концентрира в целевите области на мозъка, векторът се инжектира в него през малки дупки в черепа, като процедурата е еднократна и трае около 12 часа. С времето вирусът се разпространява и към съседните региони на мозъка, потискайки образуването на дефектния протеин и в тях. Така терапията започва да действа веднага в най-засегнатите участъци, а впоследствие разширява зоната, която предпазва.

От предоставената към момента информация резултатите изглеждат обещаващи, но все пак трябва да се обърне внимание, че все още не са публикувани в рецензиран журнал, поради което не могат да бъдат подложени на критичен преглед от научната общност. Също така процедурата е изключително инвазивна, което може да постави пречки пред широкото ѝ прилагане. Въпреки това, ако компанията успее да предложи терапията комерсиално, най-вероятно ще има достатъчно пациенти, които биха се подложили на такава операция, като се има предвид как се развива заболяването.

Security updates for Thursday

Post Syndicated from jake original https://lwn.net/Articles/1048448/

Security updates have been issued by Debian (kdeconnect, libssh, and samba), Fedora (7zip, docker-buildkit, and docker-buildx), Oracle (bind, buildah, cups, delve and golang, expat, firefox, gimp, go-rpm-macros, haproxy, kernel, lasso, libsoup, libtiff, mingw-expat, openssl, podman, python-kdcproxy, qt5-qt3d, runc, squid, thunderbird, tigervnc, valkey, webkit2gtk3, xorg-x11-server, and xorg-x11-server-Xwayland), SUSE (buildah, cloudflared, containerd, expat, firefox, gnutls, helm, kernel, libxslt, mysql-connector-java, ongres-scram, openbao, openexr, openssh, podman, python311, python312, ruby2.5, rubygem-rack, runc, samba, sssd, tiff, unbound, and yelp), and Ubuntu (edk2, ffmpeg, h2o, python3.13, rust-openssl, and valkey).

Четвъртък, 27 Ноември 2025

Post Syndicated from georgi original http://georgi.unixsol.org/diary/archive.php/2025-11-27

Напомниха ми, че еврото идва след месец и малко, а програмката за обръщане на числа
словом работи само с левове. Затова запретнах ръкави и вече има Число словом: конвертор на числа към евро (код за сваляне).

Правилата са същите като за Число словом: конвертор на числа към български левове (код за сваляне),

Ползвайте с кеф и изпращайте в моя посока good vibes only (само благини).

Run Apache Spark and Iceberg 4.5x faster than open source Spark with Amazon EMR

Post Syndicated from Atul Payapilly original https://aws.amazon.com/blogs/big-data/run-apache-spark-and-iceberg-4-5x-faster-than-open-source-spark-with-amazon-emr/

This post shows how Amazon EMR 7.12 can make your Apache Spark and Iceberg workloads up to 4.5x faster performance.

The Amazon EMR runtime for Apache Spark provides a high-performance runtime environment with full API compatibility with open source Apache Spark and Apache Iceberg. Amazon EMR on EC2, Amazon EMR Serverless, Amazon EMR on Amazon EKS, Amazon EMR on AWS Outposts and AWS Glue use the optimized runtimes.

Our benchmarks show Amazon EMR 7.12 runs TPC-DS 3 TB workloads 4.5x faster than open source Spark 3.5.6 with Iceberg 1.10.0.

Performance improvements include optimizations for metadata caching, parallel I/O, adaptive query planning, data type handling, and fault tolerance. There were also some Iceberg specific regressions around data scans that we identified and fixed.

These optimizations let you match Parquet performance on Amazon EMR while keeping the key features of Iceberg key features: ACID transactions, time travel, and schema evolution.

Benchmark results compared to open source

To assess the performance of the Spark engine with the Iceberg table format, we performed benchmark tests using the 3 TB TPC-DS dataset, version 2.13, a popular industry standard benchmark. Benchmark tests for the Amazon EMR runtime for Apache Spark and Apache Iceberg were conducted on Amazon EMR 7.12 EC2 clusters compared to open source Apache Spark 3.5.6 and Apache Iceberg 1.10.0 on EC2 clusters.

Note: Our results derived from the TPC-DS dataset are not directly comparable to the official TPC-DS results due to setup differences.

The setup instructions and technical details are available in our GitHub repository. To minimize the influence of external catalogs like AWS Glue and Hive, we used the Hadoop catalog for the Iceberg tables. This uses the underlying file system, specifically Amazon S3, as the catalog. We can define this setup by configuring the property spark.sql.catalog.<catalog_name>.type. The fact tables used the default partitioning by the date column, which vary from 200–2,100 partitions. No precalculated statistics were used for these tables.

We ran a total of 104 SparkSQL queries in 3 sequential rounds, and the average runtime of each query across these rounds was taken for comparison. The average runtime for the 3 rounds on Amazon EMR 7.12 with Iceberg enabled was 0.37 hours, demonstrating a 4.5x speed increase compared to open source Spark 3.5.6 and Iceberg 1.10.0. The following figure presents the total runtimes in seconds.

The following table summarizes the metrics.

Metric Amazon EMR 7.12 on EC2 Amazon EMR 7.5 on EC2 Open source Apache Spark 3.5.6 and Apache Iceberg 1.10.0
Average runtime in seconds 1349.62 1535.62 6113.92
Geometric mean over queries in seconds 7.45910 8.30046 22.31854
Cost* $4.81 $5.47 $17.65

*Detailed cost estimates are discussed later in this post.

The following chart demonstrates the per-query performance improvement of Amazon EMR 7.12 relative to open source Spark 3.5.6 and Iceberg 1.10.0. The extent of the speedup varies from one query to another, with the fastest up to 13.6x faster for q23b, with Amazon EMR outperforming open source Spark with Iceberg tables. The horizontal axis arranges the TPC-DS 3TB benchmark queries in descending order based on the performance improvement seen with Amazon EMR, and the vertical axis depicts the magnitude of this speedup as a ratio.

Cost comparison breakdown

Our benchmark provides the total runtime and geometric mean data to assess the performance of Spark and Iceberg in a complex, real-world decision support scenario. For additional insights, we also examine the cost aspect. We calculate cost estimates using formulas that account for EC2 On-Demand instances, Amazon Elastic Block Store (Amazon EBS), and Amazon EMR expenses.

  • Amazon EC2 cost (includes SSD cost) = number of instances * r5d.4xlarge hourly rate * job runtime in hours
    • 4xlarge hourly rate = $1.152 per hour
  • Root Amazon EBS cost = number of instances * Amazon EBS per GB-hourly rate * root EBS volume size * job runtime in hours
  • Amazon EMR cost = number of instances * r5d.4xlarge Amazon EMR cost * job runtime in hours
    • 4xlarge Amazon EMR cost = $0.27 per hour
  • Total cost = Amazon EC2 cost + root Amazon EBS cost + Amazon EMR cost

The calculations reveal that the Amazon EMR 7.12 benchmark yields a 3.6x cost efficiency improvement over open source Spark 3.5.6 and Iceberg 1.10.0 in running the benchmark job.

Metric Amazon EMR 7.12 Amazon EMR 7.5 Open source Apache Spark 3.5.6 and Apache Iceberg 1.10.0
Runtime in seconds 1349.62 1535.62 6113.92

Number of EC2 instances

(Includes primary node)

9 9 9
Amazon EBS Size 20gb 20gb 20gb

Amazon EC2

(Total runtime cost)

$3.89 $4.42 $17.61
Amazon EBS cost $0.01 $0.01 $0.04
Amazon EMR cost $0.91 $1.04 $0
Total cost $4.81 $5.47 $17.65
Cost savings Amazon EMR 7.12 is 3.6x better Amazon EMR 7.5 is 3.2x better Baseline

In addition to the time-based metrics discussed so far, data from Spark event logs show that Amazon EMR scanned approximately 4.3x less data from Amazon S3 and 5.3x fewer records than the open source version in the TPC-DS 3 TB benchmark. This reduction in Amazon S3 data scanning contributes directly to cost savings for Amazon EMR workloads.

Run open source Apache Spark benchmarks on Apache Iceberg tables

We used separate EC2 clusters, each equipped with 9 r5d.4xlarge instances, for testing both open source Spark 3.5.6 and Amazon EMR 7.12 for Iceberg workload. The primary node was equipped with 16 vCPU and 128 GB of memory, and the 8 worker nodes together had 128 vCPU and 1024 GB of memory. We conducted tests using the Amazon EMR default settings to showcase the typical user experience and minimally adjusted the settings of Spark and Iceberg to maintain a balanced comparison.

The following table summarizes the Amazon EC2 configurations for the primary node and 8 worker nodes of type r5d.4xlarge.

EC2 Instance vCPU Memory (GiB) Instance storage (GB) EBS root volume (GB)
r5d.4xlarge 16 128 2 x 300 NVMe SSD 20 GB

Prerequisites

The following prerequisites are required to run the benchmarking:

  1. Using the instructions in the emr-spark-benchmark GitHub repository, set up the TPC-DS source data in your S3 bucket and on your local computer.
  2. Build the benchmark application following the steps provided in Steps to build spark-benchmark-assembly application and copy the benchmark application to your S3 bucket. Alternatively, copy spark-benchmark-assembly-3.5.6.jar to your S3 bucket.
  3. Create Iceberg tables from the TPC-DS source data. Follow the instructions on GitHub to create Iceberg tables using the Hadoop catalog. For example, the following code uses an Amazon EMR 7.12 cluster with Iceberg enabled to create the tables:
aws emr add-steps --cluster-id <cluster-id> --steps Type=Spark,Name="Create Iceberg Tables",
Args=[--class,com.amazonaws.eks.tpcds.CreateIcebergTables,--conf,spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,
--conf,spark.sql.catalog.hadoop_catalog=org.apache.iceberg.spark.SparkCatalog,
--conf,spark.sql.catalog.hadoop_catalog.type=hadoop,
--conf,spark.sql.catalog.hadoop_catalog.warehouse=s3://<bucket>/<warehouse_path>/,
--conf,spark.sql.catalog.hadoop_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO,
s3://<bucket>/<jar_location>/spark-benchmark-assembly-3.5.6.jar,s3://blogpost-sparkoneks-us-east-1/blog/BLOG_TPCDS-TEST-3T-partitioned/,
/home/hadoop/tpcds-kit/tools,parquet,3000,true,<database_name>,true,true],ActionOnFailure=CONTINUE --region <AWS region>

Note: The Hadoop catalog warehouse location and database name from the preceding step. We use the same Iceberg tables to run benchmarks with Amazon EMR 7.12 and open source Spark.

This benchmark application is built from the branch tpcds-v2.13_iceberg. If you’re building a new benchmark application, switch to the correct branch after downloading the source code from the GitHub repository.

Create and configure a YARN cluster on Amazon EC2

To compare Iceberg performance between Amazon EMR on Amazon EC2 and open source Spark on Amazon EC2, follow the instructions in the emr-spark-benchmark GitHub repository to create an open source Spark cluster on Amazon EC2 using Flintrock with 8 worker nodes.

Based on the cluster selection for this test, the following configurations are used:

Make sure to replace the placeholder <private ip of primary node>, in the yarn-site.xml file, with the primary node’s IP address of your Flintrock cluster.

Run the TPC-DS benchmark with Apache Spark 3.5.6 and Apache Iceberg 1.10.0

Complete the following steps to run the TPC-DS benchmark:

  1. Log in to the open source cluster primary node using flintrock login $CLUSTER_NAME.
  2. Submit your Spark job:
    1. Choose the correct Iceberg catalog warehouse location and database that has the created Iceberg tables.
    2. The results are created in s3://<YOUR_S3_BUCKET>/benchmark_run.
    3. You can track progress in /media/ephemeral0/spark_run.log.
spark-submit \
--master yarn \
--deploy-mode client \
--class com.amazonaws.eks.tpcds.BenchmarkSQL \
--conf spark.driver.cores=4 \
--conf spark.driver.memory=10g \
--conf spark.executor.cores=16 \
--conf spark.executor.memory=100g \
--conf spark.executor.instances=8 \
--conf spark.network.timeout=2000 \
--conf spark.executor.heartbeatInterval=300s \
--conf spark.dynamicAllocation.enabled=false \
--conf spark.shuffle.service.enabled=false \
--conf spark.hadoop.fs.s3a.aws.credentials.provider=com.amazonaws.auth.InstanceProfileCredentialsProvider \
--conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \
--conf spark.jars.packages=org.apache.hadoop:hadoop-aws:3.3.4,org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0,org.apache.iceberg:iceberg-aws-bundle:1.10.0 \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions   \
--conf spark.sql.catalog.local=org.apache.iceberg.spark.SparkCatalog    \
--conf spark.sql.catalog.local.type=hadoop  \
--conf spark.sql.catalog.local.warehouse=s3a://<YOUR_S3_BUCKET>/<warehouse_path>/ \
--conf spark.sql.defaultCatalog=local   \
--conf spark.sql.catalog.local.io-impl=org.apache.iceberg.aws.s3.S3FileIO   \
spark-benchmark-assembly-3.5.6.jar   \
s3://<YOUR_S3_BUCKET>/benchmark_run 3000 1 false  \
q1-v2.13,q10-v2.13,q11-v2.13,q12-v2.13,q13-v2.13,q14a-v2.13,q14b-v2.13,q15-v2.13,q16-v2.13,\
q17-v2.13,q18-v2.13,q19-v2.13,q2-v2.13,q20-v2.13,q21-v2.13,q22-v2.13,q23a-v2.13,q23b-v2.13,\
q24a-v2.13,q24b-v2.13,q25-v2.13,q26-v2.13,q27-v2.13,q28-v2.13,q29-v2.13,q3-v2.13,q30-v2.13,\
q31-v2.13,q32-v2.13,q33-v2.13,q34-v2.13,q35-v2.13,q36-v2.13,q37-v2.13,q38-v2.13,q39a-v2.13,\
q39b-v2.13,q4-v2.13,q40-v2.13,q41-v2.13,q42-v2.13,q43-v2.13,q44-v2.13,q45-v2.13,q46-v2.13,\
q47-v2.13,q48-v2.13,q49-v2.13,q5-v2.13,q50-v2.13,q51-v2.13,q52-v2.13,q53-v2.13,q54-v2.13,\
q55-v2.13,q56-v2.13,q57-v2.13,q58-v2.13,q59-v2.13,q6-v2.13,q60-v2.13,q61-v2.13,q62-v2.13,\
q63-v2.13,q64-v2.13,q65-v2.13,q66-v2.13,q67-v2.13,q68-v2.13,q69-v2.13,q7-v2.13,q70-v2.13,\
q71-v2.13,q72-v2.13,q73-v2.13,q74-v2.13,q75-v2.13,q76-v2.13,q77-v2.13,q78-v2.13,q79-v2.13,\
q8-v2.13,q80-v2.13,q81-v2.13,q82-v2.13,q83-v2.13,q84-v2.13,q85-v2.13,q86-v2.13,q87-v2.13,\
q88-v2.13,q89-v2.13,q9-v2.13,q90-v2.13,q91-v2.13,q92-v2.13,q93-v2.13,q94-v2.13,q95-v2.13,\
q96-v2.13,q97-v2.13,q98-v2.13,q99-v2.13,ss_max-v2.13    \
true <database> > /media/ephemeral0/spark_run.log 2>&1 &!

Summarize the results

After the Spark job finishes, retrieve the test result file from the output S3 bucket at s3://<YOUR_S3_BUCKET>/benchmark_run/timestamp=xxxx/summary.csv/xxx.csv. This can be done either through the Amazon S3 console by navigating to the specified bucket location or by using the Amazon Command Line Interface (AWS CLI). The Spark benchmark application organizes the data by creating a timestamp folder and placing a summary file within a folder labeled summary.csv. The output CSV files contain 4 columns without headers:

  • Query name
  • Median time
  • Minimum time
  • Maximum time

With the data from 3 separate test runs with 1 iteration each time, we can calculate the average and geometric mean of the benchmark runtimes.

Run the TPC-DS benchmark with Amazon EMR runtime for Apache Spark

Most of the instructions are similar to Steps to run Spark Benchmarking with a few Iceberg-specific details.

Prerequisites

Complete the following prerequisite steps:

  1. Run aws configure to configure the AWS CLI shell to point to the benchmarking AWS account. Refer to Configure the AWS CLI for instructions.
  2. Upload the benchmark application JAR file to Amazon S3.

Deploy Amazon EMR cluster and run the benchmark job

Complete the following steps to run the benchmark job:

  1. Use the AWS CLI command as shown in Deploy EMR on EC2 Cluster and run benchmark job to deploy an Amazon EMR on EC2 cluster. Make sure to enable Iceberg. See Create an Iceberg cluster for more details. Choose the correct Amazon EMR version, root volume size, and same resource configuration as the open source Flintrock setup. Refer to create-cluster for a detailed description of the AWS CLI options.
  2. Store the cluster ID from the response. We need this for the next step.
  3. Submit the benchmark job in Amazon EMR using add-steps from the AWS CLI:
    1. Replace <cluster ID> with the cluster ID from Step 2.
    2. The benchmark application is at s3://<your-bucket>/spark-benchmark-assembly-3.5.6.jar.
    3. Choose the correct Iceberg catalog warehouse location and database that has the created Iceberg tables. This should be the same as the one used for the open source TPC-DS benchmark run.
    4. The results will be in s3://<your-bucket>/benchmark_run.
aws emr add-steps   --cluster-id <cluster-id>
--steps Type=Spark,Name="SPARK Iceberg EMR TPCDS Benchmark Job",
Args=[--class,com.amazonaws.eks.tpcds.BenchmarkSQL,
--conf,spark.driver.cores=4,
--conf,spark.driver.memory=10g,
--conf,spark.executor.cores=16,
--conf,spark.executor.memory=100g,
--conf,spark.executor.instances=8,
--conf,spark.network.timeout=2000,
--conf,spark.executor.heartbeatInterval=300s,
--conf,spark.dynamicAllocation.enabled=false,
--conf,spark.shuffle.service.enabled=false,
--conf,spark.sql.iceberg.data-prefetch.enabled=true,
--conf,spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,
--conf,spark.sql.catalog.local=org.apache.iceberg.spark.SparkCatalog,
--conf,spark.sql.catalog.local.type=hadoop,
--conf,spark.sql.catalog.local.warehouse=s3://<your-bucket>/<warehouse-path>,
--conf,spark.sql.defaultCatalog=local,
--conf,spark.sql.catalog.local.io-impl=org.apache.iceberg.aws.s3.S3FileIO,
s3://<your-bucket>/spark-benchmark-assembly-3.5.6.jar,
s3://<your-bucket>/benchmark_run,3000,1,false,
'q1-v2.13\,q10-v2.13\,q11-v2.13\,q12-v2.13\,q13-v2.13\,q14a-v2.13\,q14b-v2.13\,q15-v2.13\,q16-v2.13\,q17-v2.13\,q18-v2.13\,q19-v2.13\,q2-v2.13\,q20-v2.13\,q21-v2.13\,q22-v2.13\,q23a-v2.13\,q23b-v2.13\,q24a-v2.13\,q24b-v2.13\,q25-v2.13\,q26-v2.13\,q27-v2.13\,q28-v2.13\,q29-v2.13\,q3-v2.13\,q30-v2.13\,q31-v2.13\,q32-v2.13\,q33-v2.13\,q34-v2.13\,q35-v2.13\,q36-v2.13\,q37-v2.13\,q38-v2.13\,q39a-v2.13\,q39b-v2.13\,q4-v2.13\,q40-v2.13\,q41-v2.13\,q42-v2.13\,q43-v2.13\,q44-v2.13\,q45-v2.13\,q46-v2.13\,q47-v2.13\,q48-v2.13\,q49-v2.13\,q5-v2.13\,q50-v2.13\,q51-v2.13\,q52-v2.13\,q53-v2.13\,q54-v2.13\,q55-v2.13\,q56-v2.13\,q57-v2.13\,q58-v2.13\,q59-v2.13\,q6-v2.13\,q60-v2.13\,q61-v2.13\,q62-v2.13\,q63-v2.13\,q64-v2.13\,q65-v2.13\,q66-v2.13\,q67-v2.13\,q68-v2.13\,q69-v2.13\,q7-v2.13\,q70-v2.13\,q71-v2.13\,q72-v2.13\,q73-v2.13\,q74-v2.13\,q75-v2.13\,q76-v2.13\,q77-v2.13\,q78-v2.13\,q79-v2.13\,q8-v2.13\,q80-v2.13\,q81-v2.13\,q82-v2.13\,q83-v2.13\,q84-v2.13\,q85-v2.13\,q86-v2.13\,q87-v2.13\,q88-v2.13\,q89-v2.13\,q9-v2.13\,q90-v2.13\,q91-v2.13\,q92-v2.13\,q93-v2.13\,q94-v2.13\,q95-v2.13\,q96-v2.13\,q97-v2.13\,q98-v2.13\,q99-v2.13\,ss_max-v2.13',
true,<database>],ActionOnFailure=CONTINUE --region <aws-region>

Summarize the results

After the step is complete, you can see the summarized benchmark result at s3://<YOUR_S3_BUCKET>/benchmark_run/timestamp=xxxx/summary.csv/xxx.csv in the same way as the previous run and compute the average and geometric mean of the query runtimes.

Clean up

To help prevent future charges, delete the resources you created by following the instructions provided in the Cleanup section of the GitHub repository.

Summary

Amazon EMR optimizes the runtime for Spark when used with Iceberg tables, achieving 4.5x faster performance than open source Apache Spark 3.5.6 and Apache Iceberg 1.10.0 with Amazon EMR 7.12 on TPC-DS 3 TB, v2.13. This represents a significant advancement from Amazon EMR 7.5, which delivered 3.6x faster performance and closes the gap to parquet performance on Amazon EMR so customers can use the benefits of Iceberg without a performance penalty.

We encourage you to keep up to date with the latest Amazon EMR releases to fully benefit from ongoing performance improvements.

To stay informed, subscribe to the RSS feed for the AWS Big Data Blog, where you can find updates on the Amazon EMR runtime for Spark and Iceberg, as well as tips on configuration best practices and tuning recommendations.


About the authors

Atul Felix Payapilly is a software development engineer for Amazon EMR at Amazon Web Services.

Akshaya KP is a software development engineer for Amazon EMR at Amazon Web Services.

Hari Kishore Chaparala is a software development engineer for Amazon EMR at Amazon Web Services.

Giovanni Matteo is the Senior Manager for the Amazon EMR Spark and Iceberg group.

Apache Spark encryption performance improvement with Amazon EMR 7.9

Post Syndicated from Sonu Kumar Singh original https://aws.amazon.com/blogs/big-data/apache-spark-encryption-performance-improvement-with-amazon-emr-7-9/

The Amazon EMR runtime for Apache Spark is a performance-optimized runtime for Apache Spark that is 100% API compatible with open source Apache Spark. With Amazon EMR release 7.9.0, the EMR runtime for Apache Spark introduces significant performance improvements for encrypted workloads, supporting Spark version 3.5.5.

For compliance and security requirements, many customers need to enable Apache Spark’s local storage encryption (spark.io.encryption.enabled = true) in addition to Amazon Simple Storage Service (Amazon S3) encryption (such as server-side encryption (SSE) or AWS Key Management Service (AWS KMS)). This feature encrypts shuffle files, cached data, and other intermediate data written to local disk during Spark operations, protecting sensitive data at rest on Amazon EMR cluster instances.

Industries subject to regulations such as the Health Insurance Portability and Accountability Act (HIPAA) for healthcare, Payment Card Industry Data Security Standard (PCI-DSS) for financial services, General Data Protection Regulation (GDPR) for personal data, and Federal Risk and Authorization Management Program (FedRAMP) for government often require encryption of all data at rest, including temporary files on local storage. While Amazon S3 encryption protects data in object storage, Spark’s I/O encryption secures the intermediate shuffle and spill data that Spark writes to local disk during distributed processing—data that never reaches Amazon S3 but might contain sensitive information extracted from source datasets. Generally, encrypted operations require additional computational overhead that can impact overall job performance.

With the built-in encryption optimizations of Amazon EMR 7.9.0, customers might see significant performance improvements in their Apache Spark applications without requiring any application changes. In our performance benchmark tests, derived from TPC-DS performance tests at 3 TB scale, we observed up to 20% faster performance with the EMR 7.9 optimized Spark runtime compared to Spark without these optimizations. Individual results may vary depending on specific workloads and configurations.

In this post, we analyze the results from our benchmark tests comparing the Amazon EMR 7.9 optimized Spark runtime against Spark 3.5.5 without encryption optimizations. We walk through a detailed cost analysis and provide step-by-step instructions to reproduce the benchmark.

Results observed

To evaluate the performance improvements, we used an open source Spark performance test utility derived from the TPC-DS performance test toolkit. We ran the tests on two nine-node (eight core nodes and one primary node) r5d.4xlarge Amazon EMR 7.9.0 clusters, comparing two configurations:

  • Baseline: EMR 7.9.0 cluster with a bootstrap action installing Spark 3.5.5 without encryption optimizations
  • Optimized: EMR 7.9.0 cluster using the EMR Spark 3.5.5 runtime with encryption optimizations

Both tests used data stored in Amazon Simple Storage Service (Amazon S3). All data processing was configured identically except for the Spark runtime version.

To maintain benchmarking consistency and ensure a consistent, equivalent comparison, we disabled Dynamic Resource Allocation (DRA) in both test configurations. This approach eliminates variability from dynamic scaling and so we can measure pure computational performance improvements.

The following table shows the total job runtime for all queries (in seconds) in the 3 TB query dataset between the baseline and Amazon EMR 7.9 optimized configurations:

Configuration Total runtime (seconds) Geometric mean (seconds) Performance improvement
Baseline (Spark 3.5.5 without optimization) 1,485 10.24
EMR 7.9 (with encryption optimization) 1,176 8.15 20% faster

We observed that our TPC-DS tests with the Amazon EMR 7.9 optimized Spark runtime completed about 20% faster based on total runtime and 20% faster based on geometric mean compared to the baseline configuration.

The encryption optimizations in Amazon EMR 7.9 deliver performance benefits through:

  • Improved shuffle and decryption operations reducing overhead during data exchange without compromising security
  • Better memory management for intermediate results

Cost analysis

The performance improvements of the Amazon EMR 7.9 optimized Spark runtime directly translate to lower costs. We realized an approximately 20% cost savings running the benchmark application with encryption optimizations compared to the baseline configuration, because of reduced hours of EMR, Amazon Elastic Compute Cloud (Amazon EC2) and Amazon Elastic Block Store (Amazon EBS) using General Purpose SSD (gp2).

The following table summarizes the cost comparison in the us-east-1 AWS Region:

Configuration Runtime (hours) Estimated cost Total EC2 instances Total vCPU Total memory (GiB) Root device (EBS)
Baseline: Spark 3.5.5 without optimization, 1 primary and 8 core nodes 0.41 $5.28 9 144 1152 64 GiB gp2
Amazon EMR 7.9 with optimization, 1 primary and 8 core nodes 0.33 $4.25 9 144 1152 64 GiB gp2

Cost breakdown

Formulas used:

  • Amazon EMR cost – Number of instances × EMR hourly rate × Runtime hours
  • Amazon EC2 cost – Number of instances × EC2 hourly rate × Runtime hour)
  • Amazon EBS cost – (EBS cost per GB per month ÷ hours in a month) × EBS volume size × number of instances × runtime hours

Note: EBS is priced monthly ($0.1 per GB per month), so we divide by 730 hours to convert to an hourly rate. EMR and EC2 are already priced hourly, so no conversion is needed.

Baseline configuration (0.41 hours):

  • Amazon EMR cost – 9 × $0.27 × 0.41 = $1.00
  • Amazon EC2 cost – 9 × $1.152 × 0.41 = $4.25
  • Amazon EBS cost – ($0.1/730 × 64 × 9 × 0.41) = $0.032
  • Total cost – $5.28

EMR 7.9 optimized configuration (0.33 hours):

  • Amazon EMR cost – (9 × $0.27 × 0.33) = $0.80
  • Amazon EC2 cost – (9 × $1.152 × 0.33) = $3.42
  • Amazon EBS cost – ($0.1/730 × 64 × 9 × 0.33) = $0.025
  • Total cost: $4.25

Total cost savings: 20% per benchmark run, which scales linearly with your production workload frequency.

Set up EMR benchmarking

For detailed instructions and scripts, see the companion GitHub repository.

Prerequisites

To set up Amazon EMR benchmarking, start by completing the following prerequisite steps:

  1. Configure your AWS Command Line Interface (AWS CLI) by running aws configure to point to your benchmarking account,
  2. Create an S3 bucket for test data and results.
  3. Copy the TPC-DS 3TB source data from a publicly available dataset to your S3 bucket using the following command:
    aws s3 cp s3://blogpost-sparkoneks-us-east-1/blog/BLOG_TPCDS-TEST-3T-partitioned s3://<YOUR-BUCKET-NAME>/BLOG_TPCDS-TEST-3T-partitioned --recursive

    Replace <YOUR-BUCKET-NAME> with the name of the S3 bucket you created in step 2.

  4. Build or download the benchmark application JAR file (spark-benchmark-assembly-3.3.0.jar)
  5. Ensure you have appropriate AWS Identity Access Management (IAM) roles for EMR cluster creation and Amazon S3 access

Deploy the baseline EMR cluster (without optimization)

Step 1: Launch EMR 7.9.0 cluster with bootstrap action

The baseline configuration uses a bootstrap action to install Spark 3.5.5 without encryption optimizations. We have made the bootstrap script publicly available in an S3 bucket for your convenience.

Create the default Amazon EMR roles:

aws emr create-default-roles

Now create the cluster:

aws emr create-cluster \
  --name "EMR-7.9-Baseline-Spark-3.5.5" \
  --release-label emr-7.9.0 \
  --applications Name=Spark \
  --ec2-attributes SubnetId=<YOUR-SUBNET-ID>,InstanceProfile=EMR_EC2_DefaultRole  \
  --service-role EMR_DefaultRole
  --instance-groups \
    InstanceGroupType=MASTER,InstanceCount=1,InstanceType=r5d.4xlarge \
    InstanceGroupType=CORE,InstanceCount=8,InstanceType=r5d.4xlarge \
  --bootstrap-actions \
    Path=s3://spark-ba/install-spark-3-5-5-no-encryption.sh,Name="install spark 3.5.5 without encryption optimization" \
  --use-default-roles \
  --log-uri s3://<YOUR-BUCKET-NAME>/logs/baseline/

Note: The bootstrap script is available in a public S3 bucket at s3://spark-ba/install-spark-3-5-5-no-encryption.sh. This script installs Apache Spark 3.5.5 without the encryption optimizations present in the Amazon EMR runtime.

Step 2: Submit the benchmark job to the baseline cluster

Next submit the Spark job using the following commands:

aws emr add-steps \
  --cluster-id <YOUR-BASELINE-CLUSTER-ID> \  
  --steps 'Type=Spark,Name="EMR-7.9-Baseline-Spark-3.5.5 Step",ActionOnFailure=CONTINUE,Args=["--deploy-mode","client","--conf","spark.io.encryption.enabled=false","--class","com.amazonaws.eks.tpcds.BenchmarkSQL","s3://<YOUR-BUCKET-NAME>/jar/spark-benchmark-assembly-3.3.0.jar","s3:// <YOUR-BUCKET-NAME>/blog/BLOG_TPCDS-TEST-3T-partitioned","s3:// <YOUR-BUCKET-NAME>/blog/BASELINE_TPCDS-TEST-3T-RESULT","/opt/tpcds-kit/tools","parquet","3000","3","false","q1-v2.4,q10-v2.4,q11-v2.4,q12-v2.4,q13-v2.4,q14a-v2.4,q14b-v2.4,q15-v2.4,q16-v2.4,q17-v2.4,q18-v2.4,q19-v2.4,q2-v2.4,q20-v2.4,q21-v2.4,q22-v2.4,q23a-v2.4,q23b-v2.4,q24a-v2.4,q24b-v2.4,q25-v2.4,q26-v2.4,q27-v2.4,q28-v2.4,q29-v2.4,q3-v2.4,q30-v2.4,q31-v2.4,q32-v2.4,q33-v2.4,q34-v2.4,q35-v2.4,q36-v2.4,q37-v2.4,q38-v2.4,q39a-v2.4,q39b-v2.4,q4-v2.4,q40-v2.4,q41-v2.4,q42-v2.4,q43-v2.4,q44-v2.4,q45-v2.4,q46-v2.4,q47-v2.4,q48-v2.4,q49-v2.4,q5-v2.4,q50-v2.4,q51-v2.4,q52-v2.4,q53-v2.4,q54-v2.4,q55-v2.4,q56-v2.4,q57-v2.4,q58-v2.4,q59-v2.4,q6-v2.4,q60-v2.4,q61-v2.4,q62-v2.4,q63-v2.4,q64-v2.4,q65-v2.4,q66-v2.4,q67-v2.4,q68-v2.4,q69-v2.4,q7-v2.4,q70-v2.4,q71-v2.4,q72-v2.4,q73-v2.4,q74-v2.4,q75-v2.4,q76-v2.4,q77-v2.4,q78-v2.4,q79-v2.4,q8-v2.4,q80-v2.4,q81-v2.4,q82-v2.4,q83-v2.4,q84-v2.4,q85-v2.4,q86-v2.4,q87-v2.4,q88-v2.4,q89-v2.4,q9-v2.4,q90-v2.4,q91-v2.4,q92-v2.4,q93-v2.4,q94-v2.4,q95-v2.4,q96-v2.4,q97-v2.4,q98-v2.4,q99-v2.4,ss_max-v2.4","true"]'

Deploy the optimized EMR cluster (with encryption optimization)

Step 1: Launch EMR 7.9.0 cluster with Spark runtime

The optimized configuration uses the EMR 7.9.0 Spark runtime without any bootstrap actions:

aws emr create-cluster \
  --name "EMR-7.9-Optimized-Native-Spark" \
  --release-label emr-7.9.0 \
  --applications Name=Spark \
  --ec2-attributes SubnetId=<YOUR-SUBNET-ID>,InstanceProfile=EMR_EC2_DefaultRole \
  --service-role EMR_DefaultRole
  --instance-groups \
    InstanceGroupType=MASTER,InstanceCount=1,InstanceType=r5d.4xlarge \
    InstanceGroupType=CORE,InstanceCount=8,InstanceType=r5d.4xlarge \
  --use-default-roles \
  --log-uri s3://<YOUR-BUCKET-NAME>/logs/optimized/

Example:

aws emr create-cluster \
--name "EMR-7.9-Optimized-Native-Spark" \
--release-label emr-7.9.0 \
--applications Name=Spark \
--ec2-attributes SubnetId=subnet-08a5f71f92bc8a801 \
--instance-groups \
InstanceGroupType=MASTER,InstanceCount=1,InstanceType=r5d.4xlarge \
InstanceGroupType=CORE,InstanceCount=8,InstanceType=r5d.4xlarge \
--bootstrap-actions \
Path=s3://spark-ba/install-spark-3-5-5-no-encryption.sh,Name="install spark 3.5.5 without encryption optimization" \
--use-default-roles \
--log-uri s3://aws-logs-123456789012-us-west-2/elasticmapreduce/

Step 2: Submit the benchmark job to optimized cluster

ext submit the Spark job using the following commands:

aws emr add-steps \
  --cluster-id <YOUR-OPTIMIZED-CLUSTER-ID> \ 
  --steps 'Type=Spark,Name="EMR-7.9-Optimized-Native-Spark Step",ActionOnFailure=CONTINUE,Args=["--deploy-mode","client","--conf","spark.io.encryption.enabled=true","--class","com.amazonaws.eks.tpcds.BenchmarkSQL","s3://<YOUR-BUCKET-NAME>/jar/spark-benchmark-assembly-3.3.0.jar","s3://<YOUR-BUCKET-NAME>/blog/BLOG_TPCDS-TEST-3T-partitioned","s3://<YOUR-BUCKET-NAME>/blog/BASELINE_TPCDS-TEST-3T-RESULT","/opt/tpcds-kit/tools","parquet","3000","3","false","q1-v2.4,q10-v2.4,q11-v2.4,q12-v2.4,q13-v2.4,q14a-v2.4,q14b-v2.4,q15-v2.4,q16-v2.4,q17-v2.4,q18-v2.4,q19-v2.4,q2-v2.4,q20-v2.4,q21-v2.4,q22-v2.4,q23a-v2.4,q23b-v2.4,q24a-v2.4,q24b-v2.4,q25-v2.4,q26-v2.4,q27-v2.4,q28-v2.4,q29-v2.4,q3-v2.4,q30-v2.4,q31-v2.4,q32-v2.4,q33-v2.4,q34-v2.4,q35-v2.4,q36-v2.4,q37-v2.4,q38-v2.4,q39a-v2.4,q39b-v2.4,q4-v2.4,q40-v2.4,q41-v2.4,q42-v2.4,q43-v2.4,q44-v2.4,q45-v2.4,q46-v2.4,q47-v2.4,q48-v2.4,q49-v2.4,q5-v2.4,q50-v2.4,q51-v2.4,q52-v2.4,q53-v2.4,q54-v2.4,q55-v2.4,q56-v2.4,q57-v2.4,q58-v2.4,q59-v2.4,q6-v2.4,q60-v2.4,q61-v2.4,q62-v2.4,q63-v2.4,q64-v2.4,q65-v2.4,q66-v2.4,q67-v2.4,q68-v2.4,q69-v2.4,q7-v2.4,q70-v2.4,q71-v2.4,q72-v2.4,q73-v2.4,q74-v2.4,q75-v2.4,q76-v2.4,q77-v2.4,q78-v2.4,q79-v2.4,q8-v2.4,q80-v2.4,q81-v2.4,q82-v2.4,q83-v2.4,q84-v2.4,q85-v2.4,q86-v2.4,q87-v2.4,q88-v2.4,q89-v2.4,q9-v2.4,q90-v2.4,q91-v2.4,q92-v2.4,q93-v2.4,q94-v2.4,q95-v2.4,q96-v2.4,q97-v2.4,q98-v2.4,q99-v2.4,ss_max-v2.4","true"]'

Benchmark command parameters explained

The Amazon EMR Spark step uses the following parameters:

  • EMR step configuration:
    • Type=Spark: Specifies this is a Spark application step
    • Name=”EMR-7.9-Baseline-Spark-3.5.5″: Human-readable name for the step
    • ActionOnFailure=CONTINUE: Continue with other steps if this one fails
  • Spark submit arguments:
    • –deploy-mode client: Run the driver on the master node (not cluster mode)
    • –class com.amazonaws.eks.tpcds.BenchmarkSQL: Main class for the TPC-DS benchmark
  • Application parameters:
    • JAR file: s3://<YOUR-BUCKET-NAME>/jar/spark-benchmark-assembly-3.3.0.jar
    • Input data: s3://<YOUR-BUCKET-NAME>/blog/BLOG_TPCDS-TEST-3T-partitioned (3 TB TPC-DS dataset)
    • Output location: s3://<YOUR-BUCKET-NAME>/blog/BASELINE_TPCDS-TEST-3T-RESULT (S3 path for results)
    • TPC-DS tools path: /opt/tpcds-kit/tools(local path on EMR nodes)
    • Format: parquet (output format)
    • Scale factor: 3000 (3 TB dataset size)
    • Iterations: 3 (run each query 3 times for averaging)
    • Collect results: false (don’t collect results to driver)
    • Query list: "q1-v2.4,q10-v2.4,...,ss_max-v2.4" (all 104 TPC-DS queries)
    • Final parameter: true (enable detailed logging and metrics)
  • Query coverage:
    • All 104 standard TPC-DS benchmark queries (q1-v2.4 through q99-v2.4)
    • Plus the ss_max-v2.4 query for additional testing
    • Each query runs 3 times to calculate average performance

Summarize the results

  1. Download the test result files from both output S3 locations:
    # Baseline results
    aws s3 cp s3://<YOUR-BUCKET-NAME>/blog/BASELINE_TPCDS-TEST-3T-RESULT/timestamp=xxxx/summary.csv/xxx.csv ./baseline-results.csv
       
    # Optimized results
    aws s3 cp s3://<YOUR-BUCKET-NAME>/blog/OPTIMIZED_TPCDS-TEST-3T-RESULT/timestamp=xxxx/summary.csv/xxx.csv ./optimized-results.csv

  2. The CSV files contain four columns (without headers):
    • Query name
    • Median time (seconds)
    • Minimum time (seconds)
    • Maximum time (seconds)
  3. Calculate performance metrics for comparison:
    • Average time per query: AVERAGE(median, min, max) for each query
    • Total runtime: Sum of all median times
    • Geometric mean: GEOMEAN(average times) across all queries
    • Speedup: Calculate the ratio between baseline and optimized for each query
  4. Create comparison analysis:Speedup = (Baseline Time - Optimized Time) / Baseline Time * 100%

Testing configuration details

The following table summarizes the test environment used for this post:

Parameter Value
EMR release emr-7.9.0 (both configurations)
Baseline Spark version 3.5.5 (installed through bootstrap action)
Baseline bootstrap script s3://spark-ba/install-spark-3-5-5-no-encryption.sh (public)
Optimized spark version Amazon EMR Spark runtime
Cluster size 9 nodes (1 primary and 8 core)
Instance type r5d.4xlarge
vCPUs per node 16
Memory per node 128 GB
Instance storage 600 GB SSD
EBS volume 64 GB gp2 (2 volumes per instance)
Total vCPUs 144 (9 × 16)
Total memory 1152 GB (9 × 128)
Dataset TPC-DS 3TB (Parquet format)
Queries 104 queries (TPC-DS v2.4)
Iterations 3 runs per query
DRA Disabled for consistent benchmarking

Clean up

To avoid incurring future charges, delete the resources you created:

  1. Terminate both EMR clusters:
    aws emr terminate-clusters --cluster-ids <YOUR-BASELINE-CLUSTER-ID> <YOUR-OPTIMIZED-CLUSTER-ID>

  2. Delete S3 test results if no longer needed:
    aws s3 rm s3://<YOUR-BUCKET-NAME>/blog/BASELINE_TPCDS-TEST-3T-RESULT/ --recursive
    aws s3 rm s3://<YOUR-BUCKET-NAME>/blog/OPTIMIZED_TPCDS-TEST-3T-RESULT/ --recursive
    aws s3 rm s3://<YOUR-BUCKET-NAME>/logs/ --recursive

  3. Remove IAM roles if created specifically for testing

Key findings

  • Up to 20% performance improvement using the Amazon EMR 7.9’s Spark runtime with no code changes required
  • 20% cost savings because of reduced runtime
  • Significant gains for shuffle-heavy, join-intensive workloads
  • 100% API compatibility with open source Apache Spark
  • Simple migration from custom Spark builds to EMR runtime
  • Easy benchmarking using publicly available bootstrap scripts

Conclusion

You can run your Apache Spark workloads up to 20% faster and at lower cost without making any changes to your applications by using the Amazon EMR 7.9.0 optimized Spark runtime. This improvement is achieved through numerous optimizations in the EMR Spark runtime, including enhanced encryption handling, improved data serialization, and optimized shuffle operations.

To learn more about Amazon EMR 7.9 and best practices, see the EMR documentation. For configuration guidance and tuning advice, subscribe to the AWS Big Data Blog.

Related resources:

If you’re running Spark workloads on Amazon EMR today, we encourage you to test the EMR 7.9 Spark runtime with your production workloads and measure the improvements specific to your use case.


About the authors

Sonu Kumar Singh

Sonu Kumar Singh

Sonu is a Senior Solutions Architect with more than 13 years of experience, with a specialization in Analytics and Healthcare domain. He has been instrumental in catalyzing transformative shifts in organizations by enabling data-driven decision-making thereby fueling innovation and growth. He enjoys it when something he designed or created brings a positive impact.

Roshin Babu

Roshin Babu

Roshin is a Sr. Specialist Solutions architect at AWS, where he collaborates with the sales team to support public sector clients. His role focuses on developing innovative solutions that solve complex business challenges while driving increased adoption of AWS analytics services. When he’s not working, Roshin is passionate about exploring new destinations, discovering great food, and enjoying soccer both as a player and fan.Polaris Jhandi

Polaris Jhandi

Polaris Jhandi

Polaris is a Cloud Application Architect with AWS Professional Services. He has a background in AI/ML and big data. He is currently working with customers to migrate their legacy mainframe applications to the AWS Cloud.Zheng Yuan

Zheng Yuan

Zheng Yuan

Zheng is a Software Engineer on the Amazon EMR Spark team, where he focuses on improving the performance of the Spark execution engine across various use cases.

The collective thoughts of the interwebz