在Spark上调试Hive中列名称解析问题的策略

时间:2016-03-30 23:58:49

标签: apache-spark hive hiveql spark-dataframe

我试图在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的策略?我真的不知道如何有效地调试这个并且搜索互联网/试验和错误并没有证明是富有成效的。

0 个答案:

没有答案