Avro Schema vs. Scala Case Class для наборов данных Spark - PullRequest
0 голосов
/ 26 апреля 2018

Мне любопытно, есть ли существенная разница в производительности между использованием схем, определенных в классах случаев Scala, и определением схем с помощью Apache Avro для наборов данных Spark.В настоящее время у меня есть схема, которая выглядит примерно так:

root
 |-- uniqueID: string (nullable = true)
 |-- fieldCount: integer (nullable = false)
 |-- fieldImportance: integer (nullable = false)
 |-- fieldPrimaryName: string (nullable = true)
 |-- fieldSecondaryName: string (nullable = true)
 |-- samples: map (nullable = true)
 |    |-- key: string
 |    |-- value: struct (valueContainsNull = true)
 |    |    |-- value1: byte (nullable = false)
 |    |    |-- value2: byte (nullable = false)
 |    |    |-- value3: byte (nullable = false)

С соответствующим классом дел, похожим на

case class FieldSample(uniqueID: String, 
                       fieldCount: Int, 
                       fieldImportance: Int,
                       fieldPrimaryName: Int,
                       fieldSecondaryName: Int, 
                       samples: Map[String, ValueStruct])

case class ValueStruct(value1: Byte,
                       value2: Byte,
                       value3: Byte)

Я реализовал это с использованием классов дел Scala, но вижу довольнобольшое узкое место при чтении с диска.Данные сохраняются на диске в формате паркета.Что меня интересует, так это то, есть ли какие-либо преимущества в производительности при использовании схем Avro по сравнению с классами случаев scala в этом случае.Я предполагаю, что вложенная схема вызывает медленное чтение паркета, поэтому мне интересно, дает ли сериализация Avro какие-либо улучшения производительности таким образом.Спасибо!

...