apache-spark - Pandas 的等价物适用于pyspark吗?

我真的希望能够在 spark 数据帧的整个列上运行复杂的函数,就像我在 Pandas 中使用应用函数所做的那样。

例如,在 Pandas 中,我有一个应用函数,它接受一个像 sub-subdomain.subdomain.facebook.co.nz/somequerystring 这样的杂乱域,并且只输出 facebook.com。

我将如何在 Spark 中执行此操作?

我看过 UDF,但我不清楚如何在单个列上运行它。

假设我有一个如下所示的简单函数,我从 pandas DF 的列中提取日期的不同位:

def format_date(row):
    year = int(row['Contract_Renewal'][7:])
    month = int(row['Contract_Renewal'][4:6])
    day = int(row['Contract_Renewal'][:3])
    date = datetime.date(year, month, day)
    return date-now

在 Pandas 中我会这样调用它:

df['days_until'] = df.apply(format_date, axis=1)

我可以在 Pyspark 中实现相同的目标吗?

最佳答案

在这种情况下,您可以使用 regexp_extract ( http://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=substring#pyspark.sql.functions.regexp_extract )、regexp_replace ( http://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=substring#pyspark.sql.functions.regexp_replace ) 和 split ( http://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=substring#pyspark.sql.functions.split ) 重新格式化字符串的日期。

它不像定义您自己的函数和像 Pandas 那样使用 apply 那样干净,但它应该比定义 Pandas/Spark UDF 更高效。

祝你好运!

关于apache-spark - Pandas 的等价物适用于pyspark吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61034251/

相关文章:

python - Pygame,声音不播放

java - 如何使用 lsp-java 在 emacs 上打开一个 maven 项目?

python - 为什么我得到 "NameError: global name ' open' is

amazon-web-services - 在 AWS 用户名和非 identity_id 下的 S

laravel - 在 laravel-passport-social-grant 包上获取 inv

javascript - 使用 Javascript 在带有自定义磁贴的新浏览器选项卡中打开 PDF

xamarin.forms - System.Net.WebException : Error: T

entity-framework - System.Data.Entity 不可用

node.js - 如何修复 Brain.js 中的 NaN 训练错误?

javascript - 如何在初始页面加载之前加载 CSS 数据主题以防止主题之间闪烁?