首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义数据帧上的操作并在以后运行它们?

如何定义数据帧上的操作并在以后运行它们?
EN

Stack Overflow用户
提问于 2019-07-29 12:12:17
回答 1查看 42关注 0票数 1

我想在不同阶段的数据帧上定义一组聚合和操作,但如果你熟悉Frameless (我不想使用Frameless),比如JobA,我不希望它们被执行(只是定义),然后再执行(就像管道一样)。

代码语言:javascript
复制
def addSelect(df:Dataframe) = {
    df.select("name")
}

def addCount(df:Dataframe) = {
    df.count()
}

def addSum(df:Dataframe) = {
    df.sum()
}

def addShow(df:Dataframe) = {
    df.show()
}

val df = ...
val pipeline = addSum( addSelect(df) )
//if(userWantsToExecute) pipeline.execute()
EN

回答 1

Stack Overflow用户

发布于 2019-07-29 23:06:45

您可以像这样创建自己的管道

代码语言:javascript
复制
final class Pipeline[A] private (val run: () => A) extends AnyVal {  
  final def compose[B](f: A => B): Pipeline[B] =
    new Pipeline(() => f(this.run()))
}

object Pipeline {
  def start[A](input: => A): Pipeline[A] =
    new Pipeline(() => input)
}

这基本上和我在我的评论中说的一样,但这让它更容易使用。

例如:

代码语言:javascript
复制
val pipeline = Pipeline.start(input = df).compose(addSelect).compose(addSum)
pipeline.run()

注意:以上代码是通用的,如果您愿意,您可以将其更具体地用于DataFrames

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57247114

复制
相关文章

相似问题

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