Не удается импортировать parse_url в pyspark - PullRequest
3 голосов
/ 07 ноября 2019

У меня есть этот SQL-запрос, для hiveql в pyspark:

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 function I get:

----> 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.

Приветствия

1 Ответ

4 голосов
/ 07 ноября 2019

parse_url является Hive UDF, поэтому вам необходимо включить поддержку Hive, создавая объект SparkSession ()

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 является встроенной SparkSQL из Spark v2.3. Он пока недоступен в pyspark.sql.functions (7/11/2019).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...