我在努力读书 avro
案例类文件: UserItemIds
包括案例类类型: User
, sbt
以及 scala 2.11
```
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.()
有谁能指导我如何使用这些类型吗?这个例子与 `avro` 文件,但这可能是 `parquet` 或任何习俗 `DB` 输入。
我需要用吗 `TypeInformation` ? 例:如果是,怎么做?
val tupleInfo: TypeInformation[(User, List[Long])] = createTypeInformation[(User, List[Long])]
我也看到了 `env.registerType()` ,是否与问题有关?非常感谢您的帮助。
我找到了解决办法 `java error` 在本例中添加默认构造函数时,我将factory方法添加到
scala `case class` 通过将其添加到伴随对象
object UserItemIds{
case class UserItemIds(
user: User,
itemIds: List[Long])
def apply(user:User,itemIds:List[Long]) = new
UserItemIds(user,itemIds)}
但这并没有解决问题
1条答案
按热度按时间iugsix8n1#
必须为
User
以及UserItemIds
类型。这可能看起来如下: