使用Pig中的HcatLoader访问在Hive中创建的视图

时间:2013-03-04 23:16:05

标签: hive apache-pig hcatalog

我只是在hive中尝试一些东西,在Pig中尝试HcatLoader。我所做的是,在Hive中创建了一个视图,然后尝试使用HcatLoader创建到pig中的视图加载数据。但它似乎无法正常工作。我只是想确认有没有办法做到这一点?当我尝试使用HcatLoader加载视图时出现以下错误

events =使用org.apache.hcatalog.pig.HCatLoader()加载'ViewName'; 转储事件;

当我使用任何tableName而不是View from Hive时,它似乎有效。此外,它不会给出Metastore错误。正如它说在转储时在load语句中成功连接到metastore,它会因以下错误而崩溃。

任何指针都会有所帮助。

谢谢, 阿图尔

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for alias events
at org.apache.pig.PigServer.openIterator(PigServer.java:857)
at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:682)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:303)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:189)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:165)
at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84)
at org.apache.pig.Main.run(Main.java:555)
at org.apache.pig.Main.main(Main.java:111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
Caused by: org.apache.pig.PigException: ERROR 1002: Unable to store alias events
at org.apache.pig.PigServer.storeEx(PigServer.java:956)
at org.apache.pig.PigServer.store(PigServer.java:919)
at org.apache.pig.PigServer.openIterator(PigServer.java:832)
... 12 more
Caused by: org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobCreationException: ERROR 2017: Internal error creating job configuration.
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler.getJob(JobControlCompiler.java:731)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler.compile(JobControlCompiler.java:259)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:180)
at org.apache.pig.PigServer.launchPlan(PigServer.java:1270)
at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1255)
at org.apache.pig.PigServer.storeEx(PigServer.java:952)

3 个答案:

答案 0 :(得分:3)

我通过在其他论坛发帖回复了我。

HCatLoader不支持在Hive中阅读视图。问题是视图被定义为表格上的查询(创建视图V作为选择x,y来自t)< / strong>。

  

Pig不会说SQL,

  

HCat不包含Hive的执行引擎

所以它也无法执行查询。阅读Pig和MR的Hive视图需要比我们现有的产品更紧密的集成。“

-Atul

答案 1 :(得分:1)

我今天很难找到同样的问题。 Hive无法读取Hive Views(但在此主题上缺少良好的异常处理代码)。 对于记录(任何其他人遇到此问题),这是当前版本的行为:在Hortonworks 2.3 with Pig 1.15上我只在日志中出现以下错误:

  

错误org.apache.pig.tools.grunt.Grunt - 错误2017:内部错误   创建工作配置。

Pig以这种方式失败,因为没有要加载的文件(因为我们试图从View加载)。

答案 2 :(得分:-1)

由于Pig从hadoop中的文件加载数据,因此从视图(没有物理文件)读取数据可能不起作用。 也许如果我们可以设法为hadoop中的视图创建文件,Pig可能能够加载它。至少将虚拟指针文件发送到实际数据文件。 不确定这是否可行或是否经过考虑。