#apache-spark #kotlin
Вопрос:
У меня есть класс данных kotlin, как показано ниже
data class Persona_Items(
val key1:Int = 0,
val key2:String = "Hello")
data class Persona(
val persona_type: String,
val created_using_algo: String,
val version_algo: String,
val createdAt:Long,
val listPersonaItems:List<Persona_Items>)
data class PersonaMetaData
(val user_id: Int,
val persona_created: Boolean,
val persona_createdAt: Long,
val listPersona:List<Persona>)
fun main() {
val personalItemList1 = listOf(Persona_Items(1), Persona_Items(key2="abc"), Persona_Items(10,"rrr"))
val personalItemList2 = listOf(Persona_Items(10), Persona_Items(key2="abcffffff"),Persona_Items(20,"rrr"))
val persona1 = Persona("HelloWorld","tttAlgo","1.0",10L,personalItemList1)
val persona2 = Persona("HelloWorld","qqqqAlgo","1.0",10L,personalItemList2)
val personMetaData = PersonaMetaData(884,true,1L, listOf(persona1,persona2))
val spark = SparkSession
.builder()
.master("local[2]")
.config("spark.driver.host","127.0.0.1")
.appName("Simple Application").orCreate
val rdd1: RDD<PersonaMetaData> = spark.toDS(listOf(personMetaData)).rdd()
val df = spark.createDataFrame(rdd1, PersonaMetaData::class.java)
df.show(false)
}
Когда я пытаюсь создать фрейм данных, я получаю следующую ошибку.
Исключение в главном потоке java.lang.Исключение UnsupportedOperationException: Схема для типа src.Persona не поддерживается.
Означает ли это, что для списка классов данных создание фрейма данных не поддерживается? Пожалуйста, помогите мне понять, чего не хватает в приведенном выше коде.
Ответ №1:
Ну, это работает для меня из коробки. Я создал простое приложение для вас, чтобы продемонстрировать его, посмотрите здесь, https://github.com/szymonprz/kotlin-spark-simple-app/blob/master/src/main/kotlin/CreateDataframeFromRDD.kt
вы можете просто запустить эту основную программу, и вы увидите, что отображается правильное содержимое. Возможно, вам нужно исправить конфигурацию инструмента сборки, если вы видите что-то специфичное для scala в проекте kotlin, тогда вы можете проверить мой build.gradle внутри этого проекта или вы можете прочитать больше об этом здесь https://github.com/JetBrains/kotlin-spark-api/blob/main/docs/quick-start-guide.md
Комментарии:
1. Спасибо, что ответили. Я отредактировал вопрос. Не могли бы вы, пожалуйста, помочь мне лучше понять ошибку.