2016-09-18 35 views
0

我想加載只有特定的分區豬相當於什麼,我想在蜂巢做等價的:豬 - 像

hive>  
select trim(column) from db.table where partition_code like 'CALL_DETAIL_1905%'; 

我在PIG

試圖匹配
data= LOAD 'db.table' USING org.apache.hive.hcatalog.pig.HCatLoader(); 
onlyPartitions = FILTER data BY (partition_code matches '^CALL_DETAIL_1905.*'); 

我得到下面的錯誤:

2016-09-18 01:07:18,098 [main] WARN org.apache.hadoop.hive.conf.HiveConf - HiveConf of name hive.semantic.analyzer.factory.impl does not exist java.io.IOException: MetaException(message:Error parsing partition filter; lexer error: null; exception NoViableAltException([email protected][])) at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:97) at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:61) at org.apache.hive.hcatalog.pig.HCatLoader.setLocation(HCatLoader.java:127) at org.apache.pig.backend.hadoop.executionengine.tez.plan.optimizer.LoaderProcessor.processLoads(LoaderProcessor.java:105) at org.apache.pig.backend.hadoop.executionengine.tez.plan.optimizer.LoaderProcessor.visitTezOp(LoaderProcessor.java:183) at org.apache.pig.backend.hadoop.executionengine.tez.plan.TezOperator.visit(TezOperator.java:249) at org.apache.pig.backend.hadoop.executionengine.tez.plan.TezOperator.visit(TezOperator.java:55) at org.apache.pig.impl.plan.DependencyOrderWalker.walk(DependencyOrderWalker.java:87) at org.apache.pig.impl.plan.PlanVisitor.visit(PlanVisitor.java:46) at org.apache.pig.backend.hadoop.executionengine.tez.TezLauncher.processLoadAndParallelism(TezLauncher.java:472) at org.apache.pig.backend.hadoop.executionengine.tez.TezLauncher.launchPig(TezLauncher.java:182) at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:304) at org.apache.pig.PigServer.launchPlan(PigServer.java:1431) at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1416) at org.apache.pig.PigServer.execute(PigServer.java:1405) at org.apache.pig.PigServer.executeBatch(PigServer.java:456) at org.apache.pig.PigServer.executeBatch(PigServer.java:439) at org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:171) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:234) at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:205) at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:81) at org.apache.pig.Main.run(Main.java:502) at org.apache.pig.Main.main(Main.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: MetaException(message:Error parsing partition filter; lexer error: null; exception NoViableAltException([email protected][])) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_partitions_by_filter_result$get_partitions_by_filter_resultStandardScheme.read(ThriftHiveMetastore.java)

下面的作品,我可以填充所有分區並將它們作爲參數,但是,竟被它如果我可以使用相同的運算符,d真的很有幫助。還請注意,這只是我嘗試匹配的正則表達式。我犯了同樣的錯誤。

data= LOAD 'db.table' USING org.apache.hive.hcatalog.pig.HCatLoader(); 
onlyPartitions = FILTER data BY partition_code in ('CALL_DETAIL_19050001500'); 
+0

刪除^並嘗試 –

回答

0

這適用於我的文件。您可以根據您的需要使用下面的匹配標準。這在oracle中與LIKE類似。

A = LOAD 'san.gdata_impala' using org.apache.hive.hcatalog.pig.HCatLoader(); 
B = FILTER A BY (UPPER($0) matches '.*(WINTERTON).*'); 
+0

Sandesh,我試圖從蜂巢表加載特定的分區中,「匹配」必須通過蜂巢元店,這就是問題出現在哪裏。 在你的情況下,你正在過濾一個CSV文件。欣賞你的幫助! – GreenThumb

+0

@Hi,我想可能你的問題對我來說不太清楚),這個過濾與蜂房元存儲很好地結合在一起。上面更新了我的代碼! – 2016-09-20 10:47:34