Посмотрите на JVM Profiler , выпущенный UBER.
JVM Profiler - это инструмент, разработанный UBER для анализа приложений JVM в распределенной среде. Он может подключать Java-агент к исполнителям приложения Spark / Hadoop распределенным способом и собирать различные показатели во время выполнения. Это позволяет отслеживать произвольные java-методы / аргументы без изменения исходного кода (аналогично Dtrace).
Вот сообщение в блоге .
Кажется, у вас отсутствует куча вложенных вызовов list
:)
Прежде всего обратите внимание, что
> identical(rep(list(), 100), list())
[1] TRUE
Вам нужно сделать
> rep(list(list()), length(ids))
[[1]]
list()
[[2]]
list()
.
Теперь для назначения:
> DT = data.table(id = ids, x = rep(list(list()), length(ids)))
> DT
id x
1: 1 <list>
2: 2 <list>
> DT[1, x:=list(list(c(2, 3)))] # notice the additional `list()`
> DT
id x
1: 1 2,3
2: 2 <list>
DT = data.table(id = ids, x = vector(length(ids), mode="list"))
, для почти того же результата. Там также помещают rep внутри[]
, какlist()[rep(1L, length(ids))]
. – Frank 13 July 2018 в 23:00