Size: a a a

2020 April 04

GP

Grigory Pomadchin in Moscow Spark
Паша Финкельштейн
Ну позвать прям schemaFor я из котлина не могу )
замени на val attrs = List(AttributeReference("value”, IntegerType, nullable = true)())
источник

GP

Grigory Pomadchin in Moscow Spark
руками типа схему напиши
источник

GP

Grigory Pomadchin in Moscow Spark
очень забавно вот это отрабатывает

val encoder = ExpressionEncoder[Arity1]
val attrs = List(AttributeReference("value", IntegerType, nullable = false)())
val bound = encoder.resolveAndBind(attrs)
println(bound.fromRow(InternalRow(1.asInstanceOf[java.lang.Integer])))
try {
 println(bound.fromRow(InternalRow(null)))
} catch {
 case e => println(e.getMessage)
}
источник

GP

Grigory Pomadchin in Moscow Spark
оно не кинет нулл экспешн) а задекодит роу в Arity1
источник

GP

Grigory Pomadchin in Moscow Spark
вдруг у тебя кинет, будет хотяб ясно где ошибку искать
источник

GP

Grigory Pomadchin in Moscow Spark
чо оно завелось?
источник

GP

Grigory Pomadchin in Moscow Spark
кстати в этом месте кодген тож происходит
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Блин, ты не представляешь как это сложно в котлине написать )
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Я ток на полпути
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Там же всюду дефолтные аргументы, которые не вины из котлина как дефолтные
источник

GP

Grigory Pomadchin in Moscow Spark
он генерируют функцию которая сырую строку конвертит в “типизированную (но со стертыми типами)”
т.е. вот эта фром роу  она под капотом использует GenerateSafeProjection который на основе десера генерирует ‘проекцию’ которая вообще функция InternalRow => InternalRow а потом кастит в рантайм тип на выходе, после извлечения из роу
источник

GP

Grigory Pomadchin in Moscow Spark
Паша Финкельштейн
Там же всюду дефолтные аргументы, которые не вины из котлина как дефолтные
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Ща я наверное на скале напишу, а то в котлине ещё и Seq не видно как нормальный тип (отдельной спасибо за это создателям либы скаловской)
источник

GP

Grigory Pomadchin in Moscow Spark
Паша Финкельштейн
Ща я наверное на скале напишу, а то в котлине ещё и Seq не видно как нормальный тип (отдельной спасибо за это создателям либы скаловской)
а что значит нормальный тип?)
источник

GP

Grigory Pomadchin in Moscow Spark
покаж как выглядит из котлина?
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Ну у которого методы есть, например )))
источник

GP

Grigory Pomadchin in Moscow Spark
очень нравится мир где теперь норма таскать помимо скалового рантайма еще и котленовый
источник

ПФ

Паша Финкельштейн... in Moscow Spark
package scala.collection
trait Seq[+A] extends scala.AnyRef with scala.PartialFunction[scala.Int, A] with scala.collection.Iterable[A] with scala.collection.GenSeq[A] with scala.collection.generic.GenericTraversableTemplate[A, scala.collection.Seq] with scala.collection.SeqLike[A, scala.collection.Seq[A]] {
 override def companion : scala.collection.generic.GenericCompanion[scala.collection.Seq] = { /* compiled code */ }
 override def seq : scala.collection.Seq[A] = { /* compiled code */ }
}
object Seq extends scala.collection.generic.SeqFactory[scala.collection.Seq] {
 implicit def canBuildFrom[A] : scala.collection.generic.CanBuildFrom[Seq.Coll, A, scala.collection.Seq[A]] = { /* compiled code */ }
 def newBuilder[A] : scala.collection.mutable.Builder[A, scala.collection.Seq[A]] = { /* compiled code */ }
}
источник

ПФ

Паша Финкельштейн... in Moscow Spark
У котлина почти нет рантайма пока мы не говорим о корутинах
источник

ПФ

Паша Финкельштейн... in Moscow Spark
это же главный плюс
источник