Size: a a a

Scala User Group

2021 October 04

ЕБ

Евгений Базаров... in Scala User Group
При присвоении partitionCount
При присвоении result
Или при return result?
источник

AS

Artem Sokolov in Scala User Group
а какие типы у переменных. а то у вас скасти не компилится

подозреваю что df.*.count возвращает тип Int и тогда не остается ничего кроме как в момент вызова .count запускать вычисления и возвращать их результат
источник

PA

Pavel Ajtkulov in Scala User Group
https://scastie.scala-lang.org/B4wEkifyTXSopaEewNCe3Q

как c помощью fs2 (fs2-io) обработать файл блоками, просто применение функции к каждой строке, чтобы каждый блок параллельно посчитался, порядок на выходе не важен.
Так конечно работает, но что-то утилизация процессора ни какая. Можно любое другое вне fs2. Функция применения к строке - на 2-3 порядка медленее чем чтение, и файл на 500+ Гб. Однопоточно конечно идет, но надо быстрее
источник

ЮБ

Юрий Бадальянц... in Scala User Group
а зачем chunkMin?
источник

PA

Pavel Ajtkulov in Scala User Group
это важно? хочется чтобы бы блоки были не мелкие
источник

AS

Artem Sokolov in Scala User Group
2-3 десятичных порядка?
источник

AS

Artem Sokolov in Scala User Group
а функция то сама CPU bound ? там никаких ИО или memory intensive штук нет?
источник

PA

Pavel Ajtkulov in Scala User Group
каждая строка - json на 5-20Кб, если play.Json в кишках ни где не блокирует, то можно сказать что там достать 2-3 поля
источник

S

Simon in Scala User Group
play.json сначала парсит всё в DOM-подобную структуру, а уже потом вытаскивает поля. Так что возможно в память упираетесь
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Ну по коду всё вроде прилично. Я думаю тут с самим инпутом что-то не то
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Либо чтение тупит, либо ещё что-то такое
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Может тред пул блокирующий маленький
источник

PA

Pavel Ajtkulov in Scala User Group
так, а как его задавать? (. Тут мой совсем первый опыт с fs2 (v3.1.3)
источник

ЮБ

Юрий Бадальянц... in Scala User Group
если дефолтный используется, то должно быть норм
источник

ЮБ

Юрий Бадальянц... in Scala User Group
он кеширующий
источник

ЕБ

Евгений Базаров... in Scala User Group
Тип Long. Ну да, он не компилится.
Схематично накидал метод, чтоб вопрос показать.
И вот вопрос касающийся отложенного вычисления метода count()
В Sparke просто DataFrame ведёт себя как lazy.
Стало интересно 🤔
count() для датафрейма вычисляется в момент инициализации переменной или в момент ретюрна результата из моего «метода»
источник

AS

Artem Sokolov in Scala User Group
в момент ассайна ("инициализации") переменной val/var.
если бы был lazy val, call by name или def - то в момент вызова этой переменной
источник

ЕБ

Евгений Базаров... in Scala User Group
Угу, разумно
Спясибо!
источник

PA

Pavel Ajtkulov in Scala User Group
склоняюсь к версии что все норм. iotop показывает 40Мбайт/с на чтении, но простое копирование обычно там на уровне 100Мбайт/с, utf8.decode и разбивка на строки не бесплатна
источник
2021 October 05

РД

Роман Друзык... in Scala User Group
помогите пожалуйста, не могу понять как сделать правильней:
Есть вот такой вот изначальный джейсончик,
{"iccid": "44444",
"time": "2021-10-05T09:37:58",
"latitude": "55.9065",
"longitude": "72.0831"}

Надо получить вот такой джейсончик:
{"iccid":"44444",
"data":{"longitude":{"value":"72.0831",
                     "updatedAt":"2021-10-05T09:37:58"},
        "latitude":{"value":"55.9065",
                    "updatedAt":"2021-10-05T09:37:58"}}}

На данном этапе проблем нет, кейс классы и json4s помогли с решением
НОООО
Если по одному из полей в data приходит null, то это поле надо исключить, например если пришло longitude none, то мы бы получили такой джейсончик
{"iccid":"44444",
"data":{"latitude":{"value":"55.9065",  "updatedAt":"2021-10-05T09:37:58"}}}

Вот как реализовать эту проверку и конструирование джейсончико в спеременной схемой внутри data....
За ранее спасибо!
источник