fly*_*zai 8 python apache-spark apache-spark-sql pyspark
我正在拆分HTTP请求以查看元素,我想知道是否有一种方法可以指定我想在同一个调用中查看的元素而无需执行其他操作.
例如:
from pyspark.sql import functions as fn
df.select(fn.split(df.http_request, '/').alias('http'))
Run Code Online (Sandbox Code Playgroud)
给我一个新Dataframe
的数组行如下:
+--------------------+
| http|
+--------------------+
|[, courses, 26420...|
Run Code Online (Sandbox Code Playgroud)
我想要索引1(课程)中的项目,而不必再做另一个select
语句指定df.select(df.http[1])
或其他.这可能吗?
max*_*max 13
使用getItem.我会说不使用python UDF只是为了让代码看起来更漂亮 - 它比本机DataFrame函数慢得多(由于在python和JVM之间移动数据).
from pyspark.sql import functions as F
df.select(F.split(df.http_request, '/').alias('http').getItem(1))
Run Code Online (Sandbox Code Playgroud)
Alb*_*nto -1
那么你可以定义一个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)))
Run Code Online (Sandbox Code Playgroud)
您也可以使用getItem
@max推荐的方法
df.select(F.split(df.http_request, '/').alias('http').getItem(1))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6756 次 |
最近记录: |