Size: a a a

2020 December 28

t

tenKe in Moscow Spark
скорее всего проблема вот в этом:

scala> new Iterator[Int] { var i: Long = 0; def hasNext = i < (Int.MaxValue.toLong + 1); def next = {i += 1; 0} }
res13: Iterator[Int]{def i: Long; def i_=(x$1: Long): Unit} = <iterator>

scala> res13.length
res14: Int = -2147483648

scala> new Iterator[Int] {
    | var i: Long = 0
    | def hasNext = i < (Int.MaxValue)
    | def next = { i += 1; 0 }
    | }
res2: Iterator[Int]{def i: Long; def i_=(x$1: Long): Unit} = <iterator>

scala> res2.length
res3: Int = 2147483647
источник

t

tenKe in Moscow Spark
Тебе надо увеличить количество партиций. Я думаю, что количество элементов на воркер непричем.

P.S. Спарк при чтении источника возвращает RDD[InternalRow], который на воркерах представлен в виде партиций типа Iterator[InternalRow]
источник

e

er@essbase.ru in Moscow Spark
Алексей
может быть и драйвер, точней пока проверить не могу. Как workaround решил разбить выемку данных на 4 таска со своим предикатом фильтрации
источник

А

Алексей in Moscow Spark
tenKe
Тебе надо увеличить количество партиций. Я думаю, что количество элементов на воркер непричем.

P.S. Спарк при чтении источника возвращает RDD[InternalRow], который на воркерах представлен в виде партиций типа Iterator[InternalRow]
Да, увеличил число партиций (это и имел в виду под воркерами)
сколько точно будет строк - count завис на запросе в источнике)

посмотрел немного код spark.jdbc и вроде нет завязки на maxvalue https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala#L319
или я не туда смотрю?
источник

t

tenKe in Moscow Spark
не туда смотришь
источник

t

tenKe in Moscow Spark
проблема более глобальная - ты не можешь создать больше Int.MaxValue в Iterator[T] (и не только в нем - кажется, что во всех стандартных коллекциях в скалке)
источник

А

Алексей in Moscow Spark
tenKe
проблема более глобальная - ты не можешь создать больше Int.MaxValue в Iterator[T] (и не только в нем - кажется, что во всех стандартных коллекциях в скалке)
аа, вот оно что
источник

А

Алексей in Moscow Spark
хотелось бы, конечно, exception увидеть, а не вот так вот..
источник

ПФ

Паша Финкельштейн... in Moscow Spark
tenKe
проблема более глобальная - ты не можешь создать больше Int.MaxValue в Iterator[T] (и не только в нем - кажется, что во всех стандартных коллекциях в скалке)
Даже в Sequence?
источник

ПФ

Паша Финкельштейн... in Moscow Spark
А если итератор бесконечный?
источник

t

tenKe in Moscow Spark
Посмотри код выше, я попробовал Int.MaxValue + 1
источник

t

tenKe in Moscow Spark
он вернул переполнение в .length
источник

ПФ

Паша Финкельштейн... in Moscow Spark
tenKe
Посмотри код выше, я попробовал Int.MaxValue + 1
А если это сделать итаратором лонгов?
источник

t

tenKe in Moscow Spark
так тип элемента то тут непричем
источник

t

tenKe in Moscow Spark
Хоть Iterator[Apple]
источник

GP

Grigory Pomadchin in Moscow Spark
tenKe
скорее всего проблема вот в этом:

scala> new Iterator[Int] { var i: Long = 0; def hasNext = i < (Int.MaxValue.toLong + 1); def next = {i += 1; 0} }
res13: Iterator[Int]{def i: Long; def i_=(x$1: Long): Unit} = <iterator>

scala> res13.length
res14: Int = -2147483648

scala> new Iterator[Int] {
    | var i: Long = 0
    | def hasNext = i < (Int.MaxValue)
    | def next = { i += 1; 0 }
    | }
res2: Iterator[Int]{def i: Long; def i_=(x$1: Long): Unit} = <iterator>

scala> res2.length
res3: Int = 2147483647
Да в принципе хорошо что ограничение есть такое
источник

GP

Grigory Pomadchin in Moscow Spark
Сейчас бы такие куски грузить на ноды а потом чтоб шафл был дольше выгрузки
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Grigory Pomadchin
Да в принципе хорошо что ограничение есть такое
Ну вообще вроде бесконечные итераторы не нарушают контрактов
источник

GP

Grigory Pomadchin in Moscow Spark
Паша Финкельштейн
Ну вообще вроде бесконечные итераторы не нарушают контрактов
стримы *
источник

ПФ

Паша Финкельштейн... in Moscow Spark
С другой стороны нафига оно в спарке непонятно
источник