|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
Привет котики. Давайте раскачаем возможности и недостатки reduce/collect. 1) Дана табличка (из аэропорта) Код: java 1. 2. 3. 4. 5.
Entity: Код: java 1. 2. 3. 4. 5. 6.
Образец данных. aircraft_code seat_no fare_conditions 319 2A Business 319 2C Business 319 2D Business 319 2F Business 319 3A Business 319 3C Business 319 3D Business 319 3F Business 319 4A Business 319 4C Business 2) С помощью Stream-API получить из нее отчет по количеству мест бизнес класса и других типов комфорта с группировкой по aircraft_code. Пример отчота. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Исходные данные для пояснения https://postgrespro.ru/education/demodb Go-go кодить! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 19:40 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
mayton, Я не котик если чо. Хорошего вам дня! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 21:22 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
Как будет угодно. Primary goal: посмотреть как выглядит аналитка на Stream::API Secondary goal: тоже самое я хочу попробовать на Spark/Scala. Насколько будет лучше-хуже. Если хватит сил и времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 21:44 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
в стримах не эксперт, навалял как мог :) . Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 21:56 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
chpasha Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Шикарно. Только вот эта последняя часть - некрасивая. Но здесь я виноват т.к. поставил задачу вида отчот. Было-бы хорошо получить не поток символов StringBuilder а поток энтитей виде строка отчота. Я понимаю что эта глупая группировка Код: java 1.
ломает естественный порядок. Давайте упростим задачу здесь. Но поставим немного другой - более табличный отчот. Пускай будет 3 строки вида. Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 22:04 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
На скале наваял: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Для спарка почти буква в букву будет ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 22:32 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
ну если у нас есть "строка отчета", то, допустим, так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
пришлось еще ввести две функции combine для reduce, чтобы лаконично добавлять элемент к List и тут же этот List возвращать, по-моему в java se по-другому никак короче не запишешь (ну и вообще рабочий код я бы в таком виде не оставлял - как минимум flatmap и reduce в отдельные функции с говорящими названиями) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 22:39 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
О спасибо. Надо теперь что-то придумать с WINDOWS functions. Но применительно к аэропорту я ничего не могу придумать материального и имеющего смысл. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 23:43 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
chpasha ну если у нас есть "строка отчета", то, допустим, так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
пришлось еще ввести две функции combine для reduce, чтобы лаконично добавлять элемент к List и тут же этот List возвращать, по-моему в java se по-другому никак короче не запишешь (ну и вообще рабочий код я бы в таком виде не оставлял - как минимум flatmap и reduce в отдельные функции с говорящими названиями) неплохо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2020, 18:06 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
mayton Давайте раскачаем возможности и недостатки reduce/collect. Делаю всё на map/reduce (правда в js) брат жив. Да, это дольше, чем написать group by и данные должны влазить в память целиком, НО возможностей и пространства для манёвров гораздо больше, чем может дать sql. Быдлокод: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
upd: для Стасяна: это не значит, что sql не нужен вообще. Тупая группировка на sql отработает быстрее, чем ты сначала будешь гнать всю таблицу по сети, потом её парсить, гнать в pojo и через стрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 05:14 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
crutchmaster, Конечно. Больше кода в аппСервере или бд определяется чисто _политикой_ организации где работаешь. Можно и так и так. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 08:33 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
crutchmaster upd: для Стасяна: это не значит, что sql не нужен вообще. Тупая группировка на sql отработает быстрее, чем ты сначала будешь гнать всю таблицу по сети, потом её парсить, гнать в pojo и через стрим. вопрос в том,насколько часто ты будешь лазить в базу- обычно все это кладется в кэш и уже оттуда тянется ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 09:17 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
asv79 обычно все это кладется в кэш Ну если у тебя цветочный магазин на 10 позиций, то, конечно, можно всё засунуть в кэш. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 09:23 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
asv79 кладется Вадя в любой проект кладет сокеты. Ты получается в любой "попадание в кэш". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 09:31 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
crutchmaster, SQL может работать плохо когда мы транспонируем табличку и роли строк-столбцов меняются местами. В этом случае императивный ЯП - лучше. Или не дай бог идет алгебра матриц. В остальных случаях разработчик отчотов быстрее справляется с задачей на SQL чем даже продвинутый кодер на обычном ЯП которому только ПРЕДСТОИТ реализовать какую-то функцию квартиля или процентиля с ROLLUP в то время как СКЛ-щик имеет это сразу из коробки и в виде DSL. Но топи не про это. Я сейчас ковыряю Spark. И пытаюсь понять что я НЕ смогу на нем сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 11:57 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
mayton ЯП которому только ПРЕДСТОИТ реализовать какую-то функцию квартиля или процентиля с ROLLUP в то время как СКЛ-щик имеет это сразу из коробки и в виде DSL. Так они тоже могут быть готовые в составе какой-нибудь либы и всё что надо это перегнать структуры в нужный вид. И потом, зайти тут в раздел субд и попробуй сходу понять что делает их 10-и этажный sql запрос, причём там нет какой-то тёмной магии анал.функций, а всякая банальщина типа выборки по интервалам или наркомания типа сложить последнюю запись с первой и отнять вторую. На тупой императивщене это просто выглядит понятнее и поддерживается легче а в sql портянки даже тот sql кодер уже через месяц не захочет лезть и начнёт мазаться, что "ничего нельзя сделать" (наблюдаю эту картину регулярно). mayton И пытаюсь понять что я НЕ смогу на нем сделать. То, для чего он совсем не предназначен и то, что не влезет в память. Последнее решается разбиением запроса на куски и я не могу придумать схожу что-то настолько жирное что надо было бы делать целиком в субд. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 12:34 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
Сортировки и группировки. Это убивает память. Двигатели которые инкапсулированы в dbms обычно знают об этом и используют внешние структуры данных (temporary-tables) для генерации резалт-сета внутри этих структур. Программисты императивных языков берут коллекции и обычно видят OOM пост-фактум. Тоесть когда это уже случилось. Но не будем о грустном. Сегодня мне надо сделать шаблончик проекта на ApacheSpark под амазонский сервис. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:19 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
А как из этого Аэропорта посохранять таблички в CSV ? Кто постгресщик? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:32 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
mayton А как из этого Аэропорта посохранять таблички в CSV ? Кто постгресщик? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:37 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
crutchmaster asv79 обычно все это кладется в кэш Ну если у тебя цветочный магазин на 10 позиций, то, конечно, можно всё засунуть в кэш. скажи это разрабам микросервисов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:47 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
asv79 скажи это разрабам микросервисов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:52 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 скажи это разрабам микросервисов сказать так ,что кеширование применяется только в цветочных магазинах с 10 запросами в минуту мог только такой же дилетант как ты петро))) ваш выход) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:57 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
asv79, Ты вроде один такой, с цветочным магазином. На сегодня ты уже перестал кодить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:58 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Ты вроде один такой, с цветочным магазином. На сегодня ты уже перестал кодить. петро ты от жизни отстал давно уже накожено и перекожено) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 14:05 |
|
Субботняя бухтелка по Stream::reduce/collect
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Ты вроде один такой, с цветочным магазином. На сегодня ты уже перестал кодить. петро ты от жизни отстал давно уже накожено и перекожено) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 14:11 |
|
|
start [/forum/topic.php?fid=59&msg=39937817&tid=2120874]: |
0ms |
get settings: |
19ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
417ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 525ms |
0 / 0 |