如何在 AWS-Glue 脚本中编写用户定义的函数?

Posted

技术标签:

【中文标题】如何在 AWS-Glue 脚本中编写用户定义的函数?【英文标题】:How to write user-defined function in AWS-Glue Script? 【发布时间】:2018-09-21 09:26:22 【问题描述】:

我们如何在动态框架或数据框架上使用 PySpark (Python) 在 AWS-Glue 脚本中编写用户定义的函数?

【问题讨论】:

【参考方案1】:

dynamicframe 不完全支持 UDF,Dataframe API 支持它的方式。你会得到最好的结果是 MAP.apply。

【讨论】:

【参考方案2】:

“AWS Glue 尚不直接支持 Lambda 函数,也称为用户定义函数。但您始终可以将 DynamicFrame 与 Apache Spark DataFrame 相互转换,以利用除了 DynamicFrames 的特殊功能之外的 Spark 功能。” - AWS Glue Medicaid Python samples

AWS Glue Medicaid Python 示例(上面引用/链接)包括一个 Spark UDF 示例:

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

chop_f = udf(lambda x: x[1:], StringType())
medicare_dataframe = medicare_dataframe.withColumn(
        "ACC", chop_f(
            medicare_dataframe["average covered charges"])).withColumn(
                "ATP", chop_f(
                    medicare_dataframe["average total payments"])).withColumn(
                        "AMP", chop_f(
                            medicare_dataframe["average medicare payments"]))
medicare_dataframe.select(['ACC', 'ATP', 'AMP']).show()

这只是标准的 Spark 代码。如果您希望使用 Spark SQL,请参阅this databricks example。

【讨论】:

以上是关于如何在 AWS-Glue 脚本中编写用户定义的函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Hive 中调用用户定义的函数?

如何从matlab中用户定义的函数返回一个值,该函数的回调在uicontrol中指定

在脚本外部编写时,具有用户定义功能的 pyspark 地图不起作用

如何编写用户定义函数?

jOOQ:如何在选择查询中调用 Sql 用户定义函数

shell脚本—— case语句+函数