我试图在spark中创建一个程序,该程序连续执行几个hiveql字符串,主要执行以下操作
DataFrame df = HiveContext.sql("HQL Statement");
df.registerTempTable("df");
DataFrame df2 = HiveContext.sql("HQL Statement Referencing df");
虽然我在简单的情况下这样做没有问题,但在尝试连续执行多个复杂查询时遇到了问题,常常引用我多次创建的临时表。
我的错误主要是列名解析错误,例如:
Exception in thread "main" org.apache.spark.sql.AnalysisException:
resolved attribute(s) people#5323L,grp#5322 missing from
age#20,secondary_email#17,email#6,last_login#16, ...,
grp#5322, people#5323L
我发现这很奇怪,因为所需的列在属性列表中,但是这个问题通常很容易通过使用 select people as people
使列名正确解析。
问题是,我似乎经常有多个名称解析错误,修复一些错误会创建其他错误。我快把自己逼疯了。
有没有人有任何调试策略可以帮助他们解决这个问题?或者更好的策略是编写不产生这种错误的hql?我真的不知道如何有效地调试这个,搜索互联网/试验和错误还没有证明是卓有成效的。
暂无答案!
目前还没有任何答案,快来回答吧!