1

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

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

当我使用任何 tableName 而不是 Hive 中的 View 时,它似乎可以工作。此外,它不会给出 Metastore 错误。正如它所说的在转储时成功连接到 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)
4

3 回答 3

3

我收到的回复是在其他论坛上发布的。

HCatLoader 不支持在 Hive 中读取视图。问题是视图被定义为对表的查询(将视图 V 创建为 select x, y from t)

猪不会说SQL,

HCat 不包含 Hive 的执行引擎

所以它也无法执行查询。从 Pig 和 MR 读取 Hive 视图将需要比我们目前更紧密的产品集成。”

于 2013-03-08T19:34:03.997 回答
1

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

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

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

于 2016-01-06T12:39:18.460 回答
-1

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

于 2014-12-16T04:25:59.810 回答