0
我想讀avro
文件,案例類:UserItemIds
包括案例類類型:User
,sbt
和scala 2.11
弗林克讀取自定義類型 - 內含價值的錯誤:'產生的原因:java.lang.NoSuchMethodException:<init>()`
case class User(id: Long, description: String)
case class UserItemIds(user: User, itemIds: List[Long])
val UserItemIdsInputStream = env.createInput(new AvroInputFormat[UserItemIds](user_item_ids_In, classOf[UserItemIds]))
UserItemIdsInputStream.print()
但收到:錯誤:
Caused by: java.lang.NoSuchMethodException: schema.User.<init>()
任何人都可以指導我如何使用這些類型的工作嗎?此示例使用avro
文件,但這可能是parquet
或任何自定義DB
輸入。
我需要使用TypeInformation
嗎?例如:如果是,該怎麼辦?
val tupleInfo: TypeInformation[(User, List[Long])] = createTypeInformation[(User, List[Long])]
我也看到了env.registerType()
,它是否與所有問題有關?任何幫助是極大的讚賞。
我找到了解決這個java error
爲Adding a default constructor在這種情況下,我將它添加到同伴對象
object UserItemIds{
case class UserItemIds(
user: User,
itemIds: List[Long])
def apply(user:User,itemIds:List[Long]) = new
UserItemIds(user,itemIds)}
添加工廠方法scala
case class
但這並沒有解決這個問題