我试图在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
我觉得奇怪,因为所需的列在属性列表中,但是,通常在HQL语句的某些部分使用select people as people
行可以轻松解决此问题,以便列名正确解析。
问题是我经常出现多个名称解析错误,修复一些错误会导致其他错误。我疯了。
有没有人有任何调试策略可以帮助他们解决这个问题?或者更好的是编写不会产生此错误的HQL的策略?我真的不知道如何有效地调试这个并且搜索互联网/试验和错误并没有证明是富有成效的。