Size: a a a

2019 August 08

ЕГ

Евгений Глотов in Data Engineers
там же подписка вроде
источник

ЕГ

Евгений Глотов in Data Engineers
Renarde
такое не сработало, создало отдельную колонку рядом с названием “col.subcol”(
обидно😐
источник

R

Renarde in Data Engineers
в моем случае коробка именно из этого и состоит)
источник

R

Renarde in Data Engineers
но там тоже это удобно не сделать(
источник

R

Renarde in Data Engineers
а вотт в самом спарке можно вот так, кстати - и положит результат куда надо на глубину:
df
.withColumn("udfResult",myUDF($"foo.baz"))
.withColumn("foo",struct($"foo.*",$"udfResult"))
.drop($"udfResult")
источник

ЕГ

Евгений Глотов in Data Engineers
ну только udfresult должен каким-то образом назваться baz
источник

R

Renarde in Data Engineers
а там не принципиально, я приблизительно так сделал - делаю дважды эксплоуд (у меня дважды вложенная структура), по вытащенному полю применяю функцию и потом обратно его в структуру запихиваю
источник

R

Renarde in Data Engineers
выглядит конечно жутко, но для разовой задачки хватает
источник
2019 August 09

DM

Daniel Matveev in Data Engineers
Renarde
Cап чатик. вопрос по работе с вложенными структурами в спарке (Scala / SQL). Что хочется сделать - применить функцию к полю в глубине вложенной структуры, не меняя самой структуры. Скажем у меня есть поле transactions, внутри него массив со словарями, и вот к одному из параметров у элементов этого массива я хочу применить функцию (скажем, возведение в квадрат). Как такое делается?
Вообще такое решается оптиками, для кейс классов полно либ (самый популярный монокль).

Но так там джсон и структуры наверняка физически не нащупать, то либо десериализовать сначала, либо курсор (https://circe.github.io/circe/cursors.html)
источник

C

Combot in Data Engineers
Yabsruti756 Mahsil has been banned! Reason: CAS ban.
источник

C

Combot in Data Engineers
Telegram has been banned! Reason: CAS ban.
источник

t

tenKe in Data Engineers
Renarde
Cап чатик. вопрос по работе с вложенными структурами в спарке (Scala / SQL). Что хочется сделать - применить функцию к полю в глубине вложенной структуры, не меняя самой структуры. Скажем у меня есть поле transactions, внутри него массив со словарями, и вот к одному из параметров у элементов этого массива я хочу применить функцию (скажем, возведение в квадрат). Как такое делается?
бггггггг
источник

t

tenKe in Data Engineers
источник

t

tenKe in Data Engineers
вселенская боль с этими вложенностями в спарке
источник

C

Combot in Data Engineers
Telegram has been banned! Reason: CAS ban.
источник

t

tenKe in Data Engineers
Вообще, единого способа удобно работать с вложенностями нет. Но есть ряд механизмов, которые можно удобно совмещать:
1) До любого вложенного поля (включая элемент массива) можно добраться с помощью конструкции типа $"foo.bar.zoo".getItem(2).getField("moo").getField("boo")
2) Если речь не идет о массивах, то вложенное поле можно изменить вышеуказанным методом и затем пересобрать всю структуру с помощью struct() и col()
3) в последних версиях spark появилось достаточно много функций для работы с массивами. Например, можно прямо на датафреймах зипнуть два массивных поля и получить массив структур из этого
4) конечно же UDF. Тут важно помнить, что: а) массив в UDF - это Seq, а структура - это Row. То есть чтобы работать в UDF с массивом структур мы используем Seq[Row] б) Row может быть быть null, ее для удобство можно завернуть в Option(row), тогда не так больно и также Row может не иметь тех полей, на которые ты расчитываешь - это все стоит предусмотеть
источник

R

Renarde in Data Engineers
ну я в итоге скомбириновал спарковский struct и transform от датабрикса - получилось то что нужно
источник

EN

Eldar Nezametdinov in Data Engineers
Инженеры!
Подскажите, вкратце,
есть потребность запустить spark2 (2.3.2+) джобы через spark-submit
на hdp 2.6.5 (где сейчас spark2.2)
Еще требования: hive, hbase коннекторы должны работать...
Какие действия надо проделать? Плохо как-то гуглится(
источник

AZ

Anton Zadorozhniy in Data Engineers
Eldar Nezametdinov
Инженеры!
Подскажите, вкратце,
есть потребность запустить spark2 (2.3.2+) джобы через spark-submit
на hdp 2.6.5 (где сейчас spark2.2)
Еще требования: hive, hbase коннекторы должны работать...
Какие действия надо проделать? Плохо как-то гуглится(
1) принести дистрибутив на клиентскую машину
2) указать на директории с конфигурациями вашего кластера
3) запустить спарк сабмит из нужной версии
источник

АЖ

Андрей Жуков in Data Engineers
(еще надо бы поднять 2.3.2)
источник