Hive 在Pig中使用HcatLoader访问配置单元中创建的视图

Hive 在Pig中使用HcatLoader访问配置单元中创建的视图,hive,apache-pig,hcatalog,Hive,Apache Pig,Hcatalog,我只是在蜂箱里试了些东西,在猪身上试了试。我所做的是,在配置单元中创建了一个视图,然后尝试通过使用HcatLoader将我创建的视图加载到pig中。但它似乎不起作用。我只是想确认一下,有没有办法做到这一点?当我尝试使用HcatLoader在pig中加载视图时,出现以下错误 events=使用org.apache.hcatalog.pig.HCatLoader()加载“ViewName”; 转储事件 当我使用任何表名而不是从配置单元中查看时,它似乎可以工作。此外,它不会给出元存储错误。正如它所说,

我只是在蜂箱里试了些东西,在猪身上试了试。我所做的是,在配置单元中创建了一个视图,然后尝试通过使用HcatLoader将我创建的视图加载到pig中。但它似乎不起作用。我只是想确认一下,有没有办法做到这一点?当我尝试使用HcatLoader在pig中加载视图时,出现以下错误

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

当我使用任何表名而不是从配置单元中查看时,它似乎可以工作。此外,它不会给出元存储错误。正如它所说,在转储时已成功连接到metastore at load语句,它会崩溃,并出现以下错误

任何提示都会有帮助

谢谢, 阿图尔


我通过在其他论坛上发布得到的回复

HCatLoader不支持在配置单元中读取视图。问题是视图被定义为表上的查询(创建视图V作为从t中选择x,y)

猪不会说SQL

HCat不包含配置单元的执行引擎


因此,它也无法执行查询。从Pig和MR读取配置单元视图将需要比当前更紧密的产品集成。”

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

我今天艰难地发现了同样的问题。配置单元无法读取配置单元视图(但缺少有关此主题的良好异常处理代码)。 对于记录(任何其他人都会遇到这个问题),当前版本的行为是这样的:在Hortonworks 2.3和Pig 1.15上,我在日志中只得到以下错误:

错误org.apache.pig.tools.grunt.grunt-错误2017:内部错误 正在创建作业配置


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

HCatLoader不从文件中拾取数据,它使用配置单元。如果你想清除它更多,你可以尝试一件事。有时,数据文件包含的空值会自动转换为“\N”,您可以在select语句中看到。如果您使用HCatLoader在pig脚本中加载相同的数据,您将在dump语句中获得值“\N”。即使我也面临同样的问题并最终得出结论,pig也无法使用HCatLoader读取视图。对于在查找此处时发现此帖子的人,请参阅。
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)