gpt4 book ai didi

python - 无法在 pyspark 中导入 parse_url

转载 作者:行者123 更新时间:2023-12-04 01:38:02 24 4
gpt4 key购买 nike

我有这个 sql 查询,用于 pyspark 中的 hiveql:

spark.sql('SELECT split(parse_url(page.viewed_page, "PATH"), "/")[1] as path FROM df')

我想将其转化为函数式查询:

df.select(split(parse_url(col('page.viewed_page'), 'HOST')))

但是当我导入 parse_url 函数时,我得到:

----> 1 from pyspark.sql.functions import split, parse_url

ImportError: cannot import name 'parse_url' from 'pyspark.sql.functions' (/usr/local/opt/apache-spark/libexec/python/pyspark/sql/functions.py)

您能否为我指明导入 parse_url 函数的正确方向。

干杯

最佳答案

parse_url是一个 Hive UDF,因此您需要在创建 SparkSession object() 时启用 Hive Support

spark = SparkSession.builder.enableHiveSupport().getOrCreate()

那么您的以下查询应该有效:

spark.sql('SELECT split(parse_url(page.viewed_page, "PATH"), "/")[1] as path FROM df')

如果您的 Spark 是 <2.2 :

from pyspark import SparkContext
from pyspark.sql import HiveContext, SQLContext

sc = SparkContext()

sqlContext = SQLContext(sc)
hivContext = HiveContext(sc)

query = 'SELECT split(parse_url(page.viewed_page, "PATH"), "/")[1] as path FROM df'

hivContext.sql(query) # this will work
sqlContext.sql(query) # this will not work

编辑:

parse_url是 Spark v2.3 内置的 SparkSQL。在 pyspark.sql.functions 中不可用截至目前(2020 年 11 月 28 日)。您仍然可以通过使用 selectExpr 在 pyspark 数据帧上使用它像这样:

df.selectExpr('parse_url(mycolumn, "HOST")')

关于python - 无法在 pyspark 中导入 parse_url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com