在同一调用中从Spark Dataframes拆分方法中选择数组元素?

发布于 2021-01-29 16:25:29

我正在拆分HTTP请求以查看元素,我想知道是否有一种方法可以指定我想在同一调用中查看的元素,而不必执行其他操作。

例如:

from pyspark.sql import functions as fn

df.select(fn.split(df.http_request, '/').alias('http'))

给了我一个新Dataframe的数组行,像这样:

+--------------------+
|                http|
+--------------------+
|[, courses, 26420...|

我想要索引1(课程)中的项目,而不必执行另一条select语句来指定df.select(df.http[1])或执行任何操作。这可能吗?

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好吧,您可以定义一个UDF

    from pyspark.sql.functions import *
    from pyspark.sql.types import *
    
    def getter(column, index):
        return column[index]
    
    getterUDF = udf(getter, StringType())
    
    df.select(getterUDF(split(df.http_request, '/').alias('http'), lit(1)))
    

    您也可以使用getItem@max推荐的方法

    df.select(F.split(df.http_request, '/').alias('http').getItem(1))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看