【发布时间】: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)
现在加入新的数据框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)
【问题讨论】:
标签: dataframe join display databricks assertion