Ошибка java.lang.AssertionError: утверждение не удалось, когда я отображаю фрейм данных (созданный, объединяя другие фреймы данных) - PullRequest
0 голосов
/ 24 сентября 2019

Я соединяю три фрейма данных, и все в порядке, но когда я вызываю метод «display» в последнем фрейме данных (объединяя три предыдущих фрейма данных), блоки данных возвращают эту ошибку:

java.lang.AssertionError: assertion failed

IИспользую:

%fs head dbfs:/databricks-datasets/iot-stream/data-user/

%fs ls dbfs:/databricks-datasets/iot-stream/data-user/

Может ли кто-нибудь мне помочь?Спасибо!

Это схемы фреймов данных:

df_MaximasCalorias

  • ID: long (nullable = true)

  • Max_Calorias: double (nullable = true)

df_MinCalorias

  • user_id: long (nullable = true)

  • Min_Calorias: double (nullable = true)

df_MediaCalorias

  • user_id: long (nullable = true)

  • Media_Calorias: double (nullable = true)

Dataframe = dfCalorias (объединить df_MaximasCalorias и df_MinCalorias)

  • ID: long (nullable = true)

  • Max_Calorias: double (nullable= true)

  • Min_Calorias: double (обнуляемый = true)

Dataframe = dfCaloriasFinal (объединение dfCalorias и df_MediaCalorias)

  • ID: long (nullable = true)

  • Max_Calorias: double (nullable = true)

  • Min_Calorias: double (nullable = true)

  • Media_Calorias: double (nullable = true)

И это полный код:

Изменить имена столбцов

df_MaximasCalorias = df_MaximasCalorias.withColumnRenamed("user_id","ID").withColumnRenamed("max(calories_burnt)","Max_Calorias") 

df_MinimasCalorias = df_MinimasCalorias.withColumnRenamed("min(calories_burnt)","Min_Calorias") df_MediaCalorias = df_MediaCalorias.withColumnRenamed("avg(calories_burnt)","Media_Calorias") 

Создать объединениевыражение

joinExpression = df_MaximasCalorias["ID"] == df_MinimasCalorias['user_id'] 

Первое присоединение

dfCalorias = df_MaximasCalorias.join(df_MinimasCalorias, joinExpression, "inner").select("ID","Max_Calorias","Min_Calorias") dfCalorias.show()

Показать данные.Отлично работает

display(dfCalorias) 

Теперь присоедините новый фрейм данных dfCalorias с df_MediaCalorias

joinExpression = dfCalorias["ID"] == df_MediaCalorias['user_id'] 



dfCaloriasFinal = dfCalorias.join(df_MediaCalorias, joinExpression, "inner").select("ID","Max_Calorias","Min_Calorias","Media_Calorias")

Ошибка в этом коде

display(dfCaloriasFinal)

1 Ответ

0 голосов
/ 24 сентября 2019

Я ценю подробный вопрос!Я почти уверен, что ваша ошибка - это утверждение

joinExpression = dfCalorias["ID"] == df_MediaCalorias['user_id'] 

, которое устанавливает joinExpression в логическое значение, поскольку вы устанавливаете его равным сравнению.Вам лучше написать уравнение соединения в самой функции

dfCaloriasFinal = dfCalorias.join(df_MediaCalorias, dfCalorias["ID"] == df_MediaCalorias['user_id'], "inner").select("ID","Max_Calorias","Min_Calorias","Media_Calorias")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...