[HADOOP] 몽고 - 하둡 커넥터를 사용하여 MongoDB와 하이브를 연결할 수 없습니다
HADOOP몽고 - 하둡 커넥터를 사용하여 MongoDB와 하이브를 연결할 수 없습니다
나는 설치하고 처음으로, 몽고 - 하둡 코어 2.0.2 하이브를 구성하려합니다. 나는 하둡 2.8.0, 하이브 2.1.1 및 MongoDB를 3.4.6을 설치했습니다. 개별적으로 실행할 때 모든 것이 잘 작동합니다.
내 문제는 내가 하이브로 MongoDB를 연결할 수 아니에요입니다. 여기 https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage 언급 한 바와 같이 나는이에 대한 몽고 - 하둡 커넥터를 사용하고 있습니다 필요한 항아리는 하둡과 하이브 lib 디렉토리에 추가됩니다. 심지어 나는 하이브 콘솔에서 hive.sh 또는 런타임에 추가합니다. 테이블 쿼리를 만들고 실행하는 동안 나는 오류를 얻고있다
내 검색어는
CREATE EXTERNAL TABLE testHive
(
id STRING,
name STRING
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","name":"name"}')
TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/hiveDb.testHive');
그리고 나는 다음과 같은 오류가 발생합니다
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/hadoop/io/BSONWritable
hive> ERROR hive.ql.exec.DDLTask - java.lang.NoClassDefFoundError: com/mongodb/hadoop/io/BSONWritable
at com.mongodb.hadoop.hive.BSONSerDe.initialize(BSONSerDe.java:132)
at org.apache.hadoop.hive.serde2.SerDeUtils.initializeSerDe(SerDeUtils.java:537)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:424)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:411)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:279)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:261)
그것은 COM / MongoDB를 / 하둡 / IO / BSONWritable 클래스가 클래스 경로에 있지하지만 필요한 (몽고 - 하둡-core.jar를) 항아리와 클래스가 항아리에 존재하는 추가 한 것을 알 수있다. 내가 사용하고 항아리의 버전
몽고 - 하둡 코어 2.0.2,
몽고 - 하둡 - 하이브 2.0.2,
몽고 - 자바 3.0.2 드라이버
감사
해결법
-
==============================
1.명시 적으로 항아리를 등록해야합니다. 당신의 하이브 스크립트에서 사용 ADD의 JAR는, 예를 들어, 이러한 JAR 파일 (코어, 하이브, 그리고 자바 드라이버)를 포함하는 JAR /path-to/mongo-hadoop-hive-
.jar를 추가하려면 명령 ;. 명시 적으로 항아리를 등록해야합니다. 당신의 하이브 스크립트에서 사용 ADD의 JAR는, 예를 들어, 이러한 JAR 파일 (코어, 하이브, 그리고 자바 드라이버)를 포함하는 JAR /path-to/mongo-hadoop-hive-
.jar를 추가하려면 명령 ;. 당신이 하이브 쉘에서 실행하는 경우, 다음과 같이 사용합니다.
하이브 /path-to/mongo-hadoop-hive-
.jar JAR의 추가>; 그런 다음 쿼리를 실행합니다.
from https://stackoverflow.com/questions/45566804/unable-to-connect-hive-with-mongodb-using-mongo-hadoop-connector by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 어떻게 테이블, 열, 뷰, 제약 키와 주석 열 하이브의 메타 데이터를 얻으려면? (0) | 2019.09.18 |
---|---|
[HADOOP] 돼지에서 다른 행에서 한 행의 값을 빼기 (0) | 2019.09.18 |
[HADOOP] 읽고 FLINK 스트리밍 작업에서 HBase를로 작성하는 방법 (0) | 2019.09.18 |
[HADOOP] 어떻게 스파크와 사용자 정의 S3 서버에 새로운 하둡 마루 마법으로 참여를 사용하는 (0) | 2019.09.17 |
[HADOOP] 동적으로 컴파일하고 다른 자바 파일에서 하둡 작업을 실행 (0) | 2019.09.17 |