Что делает [& hellip; Array ()]? [Дубликат]

Ниже есть один путь, кроме 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 поддерживает сохраняющиеся данные в памяти кучи, но использование отключенной кучи в настоящее время не отображается, пользователю не так удобно контролировать и профиль, поэтому здесь предлагается выставить память кучи, а также использование памяти в куче в разных местах:

  1. На странице исполнителя Spark UI будет отображаться как использование памяти, так и куча памяти.
  2. Запрос REST возвращает как память, так и кучу памяти.
  3. Также эти два использования памяти могут быть получены программно из SparkListener.
blockquote>

14
задан Felix Kling 19 March 2016 в 01:01
поделиться

2 ответа

Оператор ... ( 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)

Надеюсь, что это поможет.

16
ответ дан user 19 August 2018 в 07:25
поделиться
  • 1
    Это совершенно неуместно (на мой взгляд). OP хочет понять ..., а не создавать массив от 1 до 18 – Amit 19 March 2016 в 00:07
  • 2
    Ну, моя цель - понять новый (для меня) синтаксис ES6, а не делать это, но спасибо вам. Ну, если я наконец сделаю это со строками let myArray = ['1','2','3', ...'18'];, то почему консольный журнал теперь ["1", "2", "3", "1", "8"]? – Aral Roca 19 March 2016 в 00:11
  • 3
    @AralRoca. Без оператора ... ( spread ) это будет ['1','2','3','18'[0],'18'[1]] – user 19 March 2016 в 00:14
  • 4
    uoooo! Ницца. Теперь ясно. Спасибо огромное! – Aral Roca 19 March 2016 в 00:14
  • 5
    Рад видеть, что вы поняли ... Я обновлю свой ответ этими примечаниями – user 19 March 2016 в 00:15

Выражение [1, 2, 3, ...18] недействительно.

Вы не можете использовать ... с Number . Вы можете использовать только ... с итерируемым объектом, например Array , String или Object .

Это интересно что Tracur - другой транспилятор - генерирует ошибку при подаче одного и того же кода:

TypeError: не может распространять неистребимый объект.

Я не интимный с спецификацией , но я думаю, что это может быть бабелем «ошибка».

2
ответ дан Alex Booker 19 August 2018 в 07:25
поделиться
  • 1
    перечислимый с .length прав? Строка, массив. И что ... делает именно в этом случае? благодаря :) – Aral Roca 19 March 2016 в 00:07
Другие вопросы по тегам:

Похожие вопросы: