首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型-参数化DStream

类型-参数化DStream
EN

Stack Overflow用户
提问于 2017-01-05 09:04:12
回答 1查看 294关注 0票数 2

DStream可以有type parameter吗?

如果是,怎么做?

当我尝试lazy val qwe = mStream.mapWithState(stateSpec) on myDStream: DStream[(A, B)] (类参数)时,我得到:

代码语言:javascript
复制
value mapWithState is not a member of org.apache.spark.streaming.dstream.DStream[(A, B)]
    lazy val qwe = mStream.mapWithState(stateSpec)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-05 09:33:01

Spark的实质性子集需要隐式ClassTags (参见Scala:什么是TypeTag,我如何使用它?),而PairDStreamFunctions.mapWithState没有什么不同。检查类定义

代码语言:javascript
复制
class PairDStreamFunctions[K, V](self: DStream[(K, V)])
  (implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K])

代码语言:javascript
复制
def mapWithState[StateType: ClassTag, MappedType: ClassTag](
    spec: StateSpec[K, V, StateType, MappedType]
  ): MapWithStateDStream[K, V, StateType, MappedType] = {
  ...
}

如果要创建一个在泛型对流上操作并使用mapWithState的函数,那么至少应该为KeyTypeValueType类型提供ClassTags

代码语言:javascript
复制
def foo[T : ClassTag, U : ClassTag](
  stream: DStream[(T, U)], f: StateSpec[T, U, Int, Int]) = stream.mapWithState(f)

如果StateTypeMappedType也是参数化的,那么您也需要对这些参数进行ClassTags

代码语言:javascript
复制
def bar[T : ClassTag, U : ClassTag, V : ClassTag,  W : ClassTag](
  stream: DStream[(T, U)], f: StateSpec[T, U, V, W]) = stream.mapWithState(f)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41480868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档