【问题标题】:Error java.lang.AssertionError: assertion failed when i display dataframe (created joining others dataframes)错误 java.lang.AssertionError:当我显示数据帧时断言失败(创建加入其他数据帧)
【发布时间】:2020-01-24 07:55:48
【问题描述】:

我正在加入三个数据帧,一切正常,但是当我在最后一个数据帧(加入三个前一个数据帧)调用“显示”方法时,数据块返回此错误:

java.lang.AssertionError: assertion failed

我正在使用:

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

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

有人可以帮我吗?谢谢!

这些是数据框架构:

df_MaximasCalorias

  • ID:长(可为空=真)

  • 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:双倍(可为空 = true)

数据框 = dfCalorias(加入 df_MaximasCalorias 和 df_MinCalorias)

  • ID:长(可为空=真)

  • Max_Calorias: double (nullable = true)

  • Min_Calorias: double (nullable = true)

Dataframe = dfCaloriasFinal(加入 dfCalorias 和 df_MediaCalorias)

  • ID:长(可为空=真)

  • Max_Calorias: double (nullable = true)

  • Min_Calorias: double (nullable = true)

  • Media_Calorias:双倍(可为空 = 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) 

现在加入新的数据框dfCaloriasdf_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)

【问题讨论】:

    标签: dataframe join display databricks assertion


    【解决方案1】:

    感谢详细的问题!我很确定你的错误是这个陈述

    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")
    

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2016-12-08
      • 2018-11-20
      • 2021-01-20
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      相关资源
      最近更新 更多