2017-10-26 5 views
0

나는 돼지 라틴어로 코드를 작성하고 출력을 하이브 테이블에 저장하려고합니다. 나는 스키마HCatStorer를 사용할 때 돼지와 오류가 발생했습니다

create table pedestrian_count(sensor_id INT, sensor_name STRING, total_hourly_counts BIGINT, highest_count INT) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ':' 
STORED AS TEXTFILE 
location '/user/cloudera/output'; 

를 하이브 테이블을 만들었습니다 그리고 내 돼지 스크립트,

register 'piggybank-0.15.0.jar'; 
DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader(); 
part1 = LOAD '/home/cloudera/Pedestrian_Counts.csv' using CSVLoader(',') as (date_time, sensor_id: int, sensor_name: chararray, hourly_counts: int); 
part2 = GROUP part1 BY (sensor_id, sensor_name); 
part3 = FOREACH part2 GENERATE FLATTEN(group) AS (sensor_id, sensor_name), SUM(part1.hourly_counts), MAX(part1.hourly_counts); 
STORE part3 into 'pedestrian_count' USING org.apache.hcatalog.pig.HCatStorer(); 

나는이 스크립트를 실행하려고

, 나는이 같은 오류를 얻고있다

Pig Stack Trace 
--------------- 
ERROR 1070: Could not resolve org.apache.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1000: Error during parsing. Could not resolve org.apache.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
    at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1701) 
    at org.apache.pig.PigServer$Graph.access$000(PigServer.java:1421) 
    at org.apache.pig.PigServer.parseAndBuild(PigServer.java:354) 
    at org.apache.pig.PigServer.executeBatch(PigServer.java:379) 
    at org.apache.pig.PigServer.executeBatch(PigServer.java:365) 
    at org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:140) 
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:202) 
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:173) 
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84) 
    at org.apache.pig.Main.run(Main.java:613) 
    at org.apache.pig.Main.main(Main.java:158) 
    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: Failed to parse: Pig script failed to parse: <file pedestrian.pig, line 6, column 42> pig script failed to validate: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
    at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:196) 
    at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1688) 
... 16 more 
Caused by: <file pedestrian.pig, line 6, column 42> pig script failed to validate: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
    at org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:1275) 
    at org.apache.pig.parser.LogicalPlanBuilder.buildFuncSpec(LogicalPlanBuilder.java:1260) 
    at org.apache.pig.parser.LogicalPlanGenerator.func_clause(LogicalPlanGenerator.java:5153) 
    at org.apache.pig.parser.LogicalPlanGenerator.store_clause(LogicalPlanGenerator.java:7751) 
    at org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1669) 
    at org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator.java:1102) 
    at org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:560) 
    at org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:421) 
    at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:188) 
... 17 more 
Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
    at org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:653) 
    at org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:1272) 

누구나 내가 잘못 한 것을 말해 줄 수 있습니까? 그리고 저를 시정하십시오. 미리 감사드립니다.

답변

1

아래 명령을 사용하여 불평 껍질에 들어가야한다고 생각합니다.

pig -useHCatalog 

은 우리가 하이브 lib 디렉토리에서 필요한 모든 항아리를 등록 HCatalog -USE 사용할 필요가 하이브에 대처하는 방법을 보여줍니다 this 링크를 참조하십시오.

2 차 제안 : 아래 명령을 시도 :

STORE part3 into 'pedestrian_count' USING org.apache.hive.hcatalog.pig.HCatStorer(); 

아래로 3 편을 대체 : 회신에 대한

part3 = FOREACH part2 GENERATE FLATTEN(group) AS (sensor_id, sensor_name), SUM(part1.hourly_counts) AS total_hourly_counts, MAX(part1.hourly_counts) AS highest_count; 
+0

감사합니다. 나는 당신이 제안한 동일한 명령을 실행할 때 오류가 발생했습니다. 저에게 주어진 명령은'돼지 - 사용합니다. 보행자입니다 .pig'입니다. 나는 또한이 명령 인'pig -useHCatalog'를 시도했다. 여전히 오류는 동일합니다. –

+0

나는 나의 대답을 편집했다. –

+0

여기서 'pedestrian_count'는 테이블 이름이고 위에서 주어진 스키마를 사용하여 beeline에 생성했습니다. 제안을 시도한 후에 오류가 발생했습니다. 'ERROR 1115 : 필드의 열 이름이 지정되지 않았습니다. HCatStorer'에 대한 전체 스키마를 인수로 제공하십시오. 그러나 모든 열 이름을 선언했다고 가정합니다. –