我有在鑲木地板檔案中保存為 json 的資料,例如 {"name":"john", "age":23.5} 我想將其轉換為
case class Person(name: String, age: Double)所以我可以在我的演員中使用模式匹配。這是我到目前為止所得到的
val reader: ParquetReader[GenericRecord] = AvroParquetReader.builder[GenericRecord](filePath).withConf(conf).build()
val source: Source[GenericRecord, NotUsed] = AvroParquetSource(reader)
source.ask[WorkerAck](28)(workerActor)
我試圖替換為GenericRecord,Person但出現以下錯誤:
inferred type arguments [com.common.Person] do not conform to method apply's type parameter bounds [T <: org.apache.avro.generic.GenericRecord]
val source: Source[Person, NotUsed] = AvroParquetSource(reader)
uj5u.com熱心網友回復:
我想你有兩個選擇
使用 Avro 代碼生成器為 Person DTO 類生成代碼。這將創建一個繼承自通用記錄的 Person 類。看這個教程
添加一個將 GenericRecord 實體轉換為 Person 的 actor:
Person((String)record.get("name"), (Double)record.get("age"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/318732.html
