Size: a a a

2020 April 04

GP

Grigory Pomadchin in Moscow Spark
такое себе)
источник

ПФ

Паша Финкельштейн... in Moscow Spark
у меня 16 потоков и 16 гектар памяти, пока  уменя не собирается спарк — оно норм работает. А котлин, к счастью, компилится намного быстрее скалы
источник

GP

Grigory Pomadchin in Moscow Spark
вот что-то такое давай
источник

GP

Grigory Pomadchin in Moscow Spark
import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
import org.apache.spark.sql.catalyst.expressions._
import org.apache.spark.sql.catalyst.InternalRow
import org.apache.spark.sql.types.StructType
import org.apache.spark.sql.catalyst.ScalaReflection

val encoder = ExpressionEncoder[Arity1]
val attrs = ScalaReflection.schemaFor[Arity1].dataType.asInstanceOf[StructType].map(f => AttributeReference(f.name, f.dataType, f.nullable, f.metadata)())
val bound = encoder.resolveAndBind(attrs)

bound.fromRow(InternalRow(1.asInstanceOf[java.lang.Integer]))
try {
 bound.fromRow(InternalRow(null.asInstanceOf[java.lang.Integer]))
} catch {
 case e => println(e.getMessage)
}
источник

GP

Grigory Pomadchin in Moscow Spark
у меня например это не кидает
источник

GP

Grigory Pomadchin in Moscow Spark
по понятным причинам)
источник

GP

Grigory Pomadchin in Moscow Spark
только я не знаю что у тебя вмето ScalaReflection.schemaFor[Arity1].dataType.asInstanceOf[StructType].map(f => AttributeReference(f.name, f.dataType, f.nullable, f.metadata)())
источник

GP

Grigory Pomadchin in Moscow Spark
можно руками схему влепить
источник

ПФ

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

GP

Grigory Pomadchin in Moscow Spark
типа
val attrs: Seq[Attribute] = 'value.int :: Nil
источник

GP

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

ПФ

Паша Финкельштейн... in Moscow Spark
ну ты понимаешь же что я из котлина зову, да?
источник

GP

Grigory Pomadchin in Moscow Spark
да
источник

ПФ

Паша Финкельштейн... in Moscow Spark
только н не анкодер, а, наоборот. энкодер
источник

GP

Grigory Pomadchin in Moscow Spark
bound.fromRow(InternalRow(1.asInstanceOf[java.lang.Integer])) должен вернуть нормальный Arity1 (т.е. декодит из интернал роу)
источник

GP

Grigory Pomadchin in Moscow Spark
Grigory Pomadchin
типа
val attrs: Seq[Attribute] = 'value.int :: Nil
val attrs = List(AttributeReference("value”, IntegerType, nullable = true)())
источник

ПФ

Паша Финкельштейн... in Moscow Spark
так, кажись примерно понял
источник

GP

Grigory Pomadchin in Moscow Spark
и тут кстати какраз вот эта особенность боксинга интов всплывает
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Ну позвать прям schemaFor я из котлина не могу )
источник

ПФ

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