Ниже есть один путь, кроме SizeEstimator
. Я часто использую
, чтобы узнать из кода о RDD, если он кэширован, а точнее, сколько его разделов кэшируется в памяти и как многие кэшируются на диске? для получения уровня хранения, также хочу знать текущий фактический статус кэширования. Знать потребление памяти.
Spark Context имеет метод разработчика api getRDDStorageInfo () Иногда вы можете использовать это.
Возвращает информацию о том, какие RDD кэшируются, если они находятся в памяти или на диске, сколько места они занимают и т. д.
Например:
scala> sc.getRDDStorageInfo res3: Array[org.apache.spark.storage.RDDInfo] = Array(RDD "HiveTableScan [name#0], (MetastoreRelation sparkdb, firsttable, None), None " (3) StorageLevel: StorageLevel(false, true, false, true, 1); CachedPartitions: 1;
TotalPartitions: 1; MemorySize: 256.0 B; ExternalBlockStoreSize: 0.0 B; DiskSize: 0.0 B)
blockquote>Кажется, что искра ui также использовала то же самое из этого кода
- См. Этот источник SPARK-17019 , который описывает ...
Описание С SPARK-13992 Spark поддерживает сохраняющиеся данные в памяти кучи, но использование отключенной кучи в настоящее время не отображается, пользователю не так удобно контролировать и профиль, поэтому здесь предлагается выставить память кучи, а также использование памяти в куче в разных местах:
blockquote>
- На странице исполнителя Spark UI будет отображаться как использование памяти, так и куча памяти.
- Запрос REST возвращает как память, так и кучу памяти.
- Также эти два использования памяти могут быть получены программно из SparkListener.
Оператор ...
( spread ) работает, возвращая каждое значение из индекса 0
в индекс length-1
:
В качестве примера:
[...'18'] // returns ['1', '8']
, который будет таким же, как:
['18'[0], '18'[1]]
Теперь, чтобы получить массив от 1
до 18
, вы можете сделать это:
[...Array(19).keys()].slice(1)
Или это с картой:
[...Array(18)].map(_=>i++,i=1)
Надеюсь, что это поможет.
Выражение [1, 2, 3, ...18]
недействительно.
Вы не можете использовать ...
с Number . Вы можете использовать только ...
с итерируемым объектом, например Array , String или Object .
Это интересно что Tracur - другой транспилятор - генерирует ошибку при подаче одного и того же кода:
TypeError: не может распространять неистребимый объект.
Я не интимный с спецификацией , но я думаю, что это может быть бабелем «ошибка».
.length
прав? Строка, массив. И что ...
делает именно в этом случае? благодаря :)
– Aral Roca
19 March 2016 в 00:07
...
, а не создавать массив от 1 до 18 – Amit 19 March 2016 в 00:07let myArray = ['1','2','3', ...'18'];
, то почему консольный журнал теперь["1", "2", "3", "1", "8"]
? – Aral Roca 19 March 2016 в 00:11...
( spread i>) это будет['1','2','3','18'[0],'18'[1]]
– user 19 March 2016 в 00:14