USQL+Python基本问题

2024-10-02 10:31:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始学习如何将Python与U-SQL集成。我正在学习这个例子:

REFERENCE ASSEMBLY [ExtPython];

DECLARE @myScript = @"
def get_mentions(tweet):    
      return ';'.join( ( w[1:] for w in tweet.split() if w[0]=='@' ) )

def usqlml_main(df):    
      del df['time']    
      del df['author']    
      df['mentions'] = df.tweet.apply(get_mentions)    
      del df['tweet']    
      return df
";

@t  =     
SELECT * FROM        
(VALUES
           ("D1","T1","A1","@foo Hello World @bar"),
           ("D2","T2","A2","@baz Hello World @beer")
       ) AS
            D( date, time, author, tweet );
@m  =
    REDUCE @t ON date
    PRODUCE date string, mentions string
    USING new Extension.Python.Reducer(pyScript:@myScript);

OUTPUT @m
    TO "/tweetmentions.csv"
    USING Outputters.Csv();

在usqlml_main中,“apply”函数是什么df.tweet.apply(得到你的提及)?在

另外,REDUCE在这种情况下做了什么?在将U-SQL与Python集成时,是否总是需要这样做?在


Tags: dfsqlgetdatereturntimemaindef
1条回答
网友
1楼 · 发布于 2024-10-02 10:31:58

Q: usqlml_main如何接收数据帧?D(日期、时间、作者、tweet)正在构建pandas数据帧吗?

当行集@t由使用时Extension.Python.Reducer,这些行将被放入pandas数据帧中。在

Q: 在usqlml_main中,“apply”函数是什么df.tweet.apply(得到你的提及)?

这是在DataFrames上定义的pandas apply()方法:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html

Q: 在这种情况下REDUCE做什么?在将U-SQL与Python集成时,是否总是需要这样做?

减少是必要的。它的名字“REDUCE”在这种情况下具有误导性。在U-SQL/Python上下文中,REDUCE的目的是根据来自特定列的键值,使用REDUCE将一组较大的行分配到较小的分区中。在上面的例子中,它试图对date列进行分区。REDUCE并不意味着代码实际上必须返回一组“reduced”行。实际上reduce可以返回更多行。同样,它更多的是关于数据分区的

相关问题 更多 >

    热门问题