【发布时间】:2018-08-24 09:16:22
【问题描述】:
我想在数据框列上运行自定义函数。该列有一个长字符串,其中包含一些 Opened 或 Clicked 信息。字符串格式在 Path 列中是这样的:
+---------------------------------------------------------------+
| Path|
+---------------------------------------------------------------+
|/utility/tracking/opened/50DD3254-BA1D-4D0B-ADB5-6529E9C90982/0|
|/utility/tracking/tracking/ClickedUrl |
+---------------------------------------------------------------+
源数据框看起来像这样
现在我正在运行 pyspark UDF 以应用于“路径”列,该列查找列中是否“打开”或“单击”,并为我提供具有值 10 或 20 的“路径”列的新数据框,否则为空,具体取决于打开点击或其他条件
def clickopen(x):
if 'opened' in x.lower().split('/'):
print(10)
elif 'clickedurl' in x.lower().split('/'):
print(20)
else:
print('null')
hunter = udf(clickopen)
new_df = new_df.withColumn("Path", hunter("Path"))
new_df.show(n=20)
并且结果在“路径”列中显示为空,而不是值 10 或 20
在获取整数值方面需要一点帮助,如果我做错了什么,请提出建议,我们将不胜感激。在此先感谢
【问题讨论】:
-
需要返回值形式的函数不打印。
标签: python apache-spark pyspark apache-spark-sql user-defined-functions