scala – org.apache.spark.sql.AnalysisException:无法解析给
发布时间:2020-12-16 18:19:15 所属栏目:安全 来源:网络整理
导读:exitTotalDF .filter($"accid" === "dc215673-ef22-4d59-0998-455b82000015") .groupBy("exiturl") .agg(first("accid"),first("segment"),$"exiturl",sum("session"),sum("sessionfirst"),first("date")) .orderBy(desc("session")) .take(500)org.apache.s
exitTotalDF .filter($"accid" === "dc215673-ef22-4d59-0998-455b82000015") .groupBy("exiturl") .agg(first("accid"),first("segment"),$"exiturl",sum("session"),sum("sessionfirst"),first("date")) .orderBy(desc("session")) .take(500) org.apache.spark.sql.AnalysisException: cannot resolve '`session`' given input columns: [first(accid,false),first(date,sum(session),exiturl,sum(sessionfirst),first(segment,false)] 它像sum函数一样无法正确找到列名. 使用Spark 2.1 解决方法
通常在这样的场景中,我将在列上使用as方法.例如.agg(第一个(“accid”),第一个(“segment”),$“exiturl”,sum(“session”).as(“session”),sum(“sessionfirst”),first(“date”) )).这使您可以更好地控制预期的内容,并且如果在将来的spark版本中总和名称发生变化,那么更新数据集中的所有名称将会更加令人头痛.
另外,我刚刚进行了一个简单的测试.如果未指定名称,则看起来Spark 2.1中的名称将更改为“sum(session)”.自己找到这种方法的一种方法是在数据集上调用printSchema. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |