Как преодолеть ошибку py4j, связанную с выбором

#pyspark

#pyspark

Вопрос:

Кто-нибудь может посоветовать мне, что я делаю неправильно ниже?

Я получаю эту ошибку и не могу найти ответ в Dr Google:(

Похоже, это конкретно связано с моей строкой фильтрации

 pickle.PicklingError: Could not serialize object: Py4JError: An error occurred while calling o85.__getnewargs__. Trace:
py4j.Py4JException: Method __getnewargs__([]) does not exist
  

Большое спасибо!

 def find_session_time(seconds):
    output = sessions.filter((sessions.start_time <= seconds) amp; (sessions.end_time >= seconds))
    output = output.select('apn')
    return 'x' 
    
myudf = udf(find_session_time, StringType())
usage = usage.withColumn('apn', myudf(usage.seconds))
  

Вот пример использования:
введите описание изображения здесь

и вот пример сессий: введите описание изображения здесь

То, что мне нужно достичь, — это для каждого пользователя найти соответствующий ключ для их транзакции.

Следовательно, вывод должен быть: введите описание изображения здесь

Комментарии:

1. Что такое sessions ?

2. это фрейм данных — я хочу найти соответствующие значения между фреймами данных использования и сеансов

3. Вы не можете использовать его таким образом в UDF. Вот почему вы получаете ошибку. Пожалуйста, помните, что UDF — это процесс, основанный на строках

4. значит, я не могу отфильтровать другой фрейм данных в UDF, используя значение по строке, которое я передал в качестве условия фильтрации? Потому что это все еще процесс на основе строк

5. Вы не можете получить доступ к self или другому фрейму данных в UDF. Вам не нужен UDF для того, что вы делаете