작동하도록 hive-hadoop-mongo 설치를 시도하고 있습니다.하이브 충돌 where 절
CREATE EXTERNAL TABLE reviews(
user_id STRING,
review_id STRING,
stars INT,
date1 STRING,
text STRING,
type STRING,
business_id STRING
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"date1":"date"}')
TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/test.reviews');
이 부분은 잘 작동 A 모두 선택 쿼리 (select * from reviews
)이 그것 같이 모든 출력하기 때문에 : 나는 JSON 파일에서 MongoDB를로 데이터를 가져온 후, 나는 몽고에 연결 하이브에서 내부 및 외부 테이블을 생성 할까요. 하지만 where 절 (예 : select * from reviews where stars=4
)을 사용하여 하이브가 충돌하면 충돌이 발생합니다.
은 내가 하이브 시작할 때 다음과 같은 항아리가 추가되고 있습니다
add jar mongo-hadoop.jar;
add jar mongo-java-driver-3.3.0.jar;
add jar mongo-hadoop-hive-2.0.1.jar;
을 그리고 그것은 어떤 의미에서 관련있는 경우, 나는이 아마존의 EMR 클러스터를 사용하고, 나는 ssh를 통해 연결하고있다. 모든 도움 여기
에 대한
덕분에 오류 하이브 밖으로 던져입니다 :
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.exec.Utilities.deserializeExpression(Ljava/lang/String;)Lorg/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc;
at com.mongodb.hadoop.hive.input.HiveMongoInputFormat.getFilter(HiveMongoInputFormat.java:134)
at com.mongodb.hadoop.hive.input.HiveMongoInputFormat.getRecordReader(HiveMongoInputFormat.java:103)
at org.apache.hadoop.hive.ql.exec.FetchOperator$FetchInputFormatSplit.getRecordReader(FetchOperator.java:691)
at org.apache.hadoop.hive.ql.exec.FetchOperator.getRecordReader(FetchOperator.java:329)
at org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:455)
at org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:424)
at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:144)
at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1885)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:252)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
이제 오류가 발생합니다 :'FAILED : 실행 오류, org.apache.hadoop.hive.ql.exec.DDLTask에서 코드 1을 반환하십시오. MetaException (메시지 : 예외 : java.io.IOException 없음 FileSystem for scheme : mongodb)' – Jonathan
관련 메모에서 하이브가 mongo를 직접 쿼리하는 대신 mongodb 덤프 파일을 읽는다는 의미입니까? – Jonathan