开始使用免费开始使用

练习创建 UDF

有时您的数据需要进行内置函数不支持的转换。这时就适合使用自定义用户定义函数("UDF")。

SQL 函数 udf 可用。

已提供一个 dataframe df2,类型为 DataFrame[doc: array<string>, in: array<string>, out: array<string>]。其 doc 列包含简单的标记。

下面的代码会显示 doc 包含 '1' 的前 20 行:

df2.where(array_contains('doc','1')).show()

您需要完成两个目标:

  1. 确保转换后的数据由非空向量组成。
  2. 某个 dataframe 的一列包含字符串数组,且每个数组只有一个元素。您希望将这一列转换为字符串。

本练习是课程的一部分

Python 中的 Spark SQL 入门

查看课程

练习说明

  • 创建一个 udf,只有当值为非空向量时返回 true,可使用 numNonzeros()
  • 创建一个 udf,返回数组的第一个元素,并返回其字符串表示。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Returns true if the value is a nonempty vector
nonempty_udf = udf(lambda x:  
    True if (x and hasattr(x, "toArray") and x.____())
    else False, ____())

# Returns first element of the array as string
s_udf = udf(lambda x: ____(x[0]) if (x and type(x) is list and len(x) > 0)
    else '', ____())
编辑并运行代码