在pig中使用hcatloader在配置单元中创建的访问视图

xcitsw88  于 2021-06-24  发布在  Pig
关注(0)|答案(3)|浏览(278)

我只是在Hive里试了点东西,在Pig里试了点东西。我所做的是,在配置单元中创建了一个视图,然后尝试通过使用hcatloader创建的视图将数据加载到pig中。但它似乎不起作用。我只是想确认一下有没有办法?当我尝试使用hcatloader在pig中加载视图时,出现以下错误
events=使用org.apache.hcatalog.pig.hcatloader()加载“viewname”;转储事件;
当我使用任何表名而不是从配置单元中查看时,它似乎可以工作。此外,它不会给出元存储错误。当谈到dump时,正如它所说的成功连接到metastore at load语句一样,它会崩溃并出现以下错误。
任何提示都会有帮助。
谢谢,阿图尔

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)
hc2pp10m

hc2pp10m1#

由于pig从hadoop中的文件加载数据,因此从视图(没有物理文件)读取数据可能无法工作。如果我们能在hadoop中为视图创建一个文件,pig就可以加载它。至少有一个指向实际数据文件的虚拟指针文件。不确定这是否可能或已经考虑过了。

5gfr0r5j

5gfr0r5j2#

我今天也发现了同样的问题。配置单元无法读取配置单元视图(但缺少有关此主题的良好异常处理代码)。对于记录(任何其他陷入这个问题的人),这就是当前版本的行为:在hortonworks 2.3和pig 1.15上,我在日志中只得到以下错误:
error org.apache.pig.tools.grunt.grunt-error 2017:创建作业配置时发生内部错误。
pig以这种方式失败,因为没有要加载的文件(正如我们试图从视图加载的那样)。

jtjikinw

jtjikinw3#

我在其他论坛上得到的回复。
“hcatloader不支持在配置单元中读取视图。问题是视图被定义为表上的查询(createviewv为selectx,yfromt)。
Pig不会说sql,
以及
hcat不包含hive的执行引擎
所以它也不能执行查询。从pig和mr那里阅读Hive视图将需要比我们目前更紧密的产品集成。”

相关问题