[HADOOP] Hive에 저장된 데이터에 대해 돼지 쿼리 실행
HADOOPHive에 저장된 데이터에 대해 돼지 쿼리 실행
Hive 형식으로 저장된 돼지 쿼리를 실행하는 방법을 알고 싶습니다. 압축 된 데이터를 저장하도록 하이브를 구성했습니다 (이 자습서 http://wiki.apache.org/hadoop/Hive/CompressedStorage 사용).
그 전에는 Hive의 구분 기호 (^ A)와 함께 정상 돼지 부하 기능을 사용했습니다. 그러나 Hive는 데이터를 압축하여 시퀀스 파일에 저장합니다. 어느 하중 기능을 사용해야합니까?
여기에 언급 된 것과 같이 밀접한 통합이 필요하지 않습니다. Hive를 돼지와 함께 사용하면 Hive가 생성 한 압축 된 시퀀스 파일을 읽는 데 사용할로드 기능 만 있습니다.
모든 해답을 가져 주셔서 감사합니다.
해결법
-
==============================
1.여기에 내가 알아 낸 것이있다. 데이터를 RCFile로 저장하면 HiveColumnarLoader를 사용하는 것이 좋습니다. 이것을 사용하여 테이블을로드하려면 먼저 몇 개의 jar를 등록해야합니다.
여기에 내가 알아 낸 것이있다. 데이터를 RCFile로 저장하면 HiveColumnarLoader를 사용하는 것이 좋습니다. 이것을 사용하여 테이블을로드하려면 먼저 몇 개의 jar를 등록해야합니다.
register /srv/pigs/piggybank.jar register /usr/lib/hive/lib/hive-exec-0.5.0.jar register /usr/lib/hive/lib/hive-common-0.5.0.jar a = LOAD '/user/hive/warehouse/table' USING org.apache.pig.piggybank.storage.HiveColumnarLoader('ts int, user_id int, url string');
Sequence 파일에서 데이터를로드하려면 PiggyBank를 사용해야합니다 (앞의 예와 같이). Piggybank의 SequenceFile 로더는 압축 파일을 처리해야합니다.
register /srv/pigs/piggybank.jar DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader(); a = LOAD '/user/hive/warehouse/table' USING SequenceFileLoader AS (int, int);
이것은 BytesWritable 타입을 읽을 수없고 그것을 Pig 타입으로 변환 할 수 없기 때문에 Pig 0.7에서 작동하지 않으며이 예외가 발생합니다 :
2011-07-01 10:30:08,589 WARN org.apache.pig.piggybank.storage.SequenceFileLoader: Unable to translate key class org.apache.hadoop.io.BytesWritable to a Pig datatype 2011-07-01 10:30:08,625 WARN org.apache.hadoop.mapred.Child: Error running child org.apache.pig.backend.BackendException: ERROR 0: Unable to translate class org.apache.hadoop.io.BytesWritable to a Pig datatype at org.apache.pig.piggybank.storage.SequenceFileLoader.setKeyType(SequenceFileLoader.java:78) at org.apache.pig.piggybank.storage.SequenceFileLoader.getNext(SequenceFileLoader.java:132) at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:142) at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:448) at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:639) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:315) at org.apache.hadoop.mapred.Child$4.run(Child.java:217) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1063) at org.apache.hadoop.mapred.Child.main(Child.java:211)
piggybank를 컴파일하는 방법은 다음과 같습니다 : piggybank를 빌드 할 수 없습니다 -> / home / build / ivy / lib가 존재하지 않습니다
from https://stackoverflow.com/questions/5741120/running-pig-query-over-data-stored-in-hive by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 임팔라는 모든 하이브 테이블에 액세스 할 수 없습니다. (0) | 2019.06.15 |
---|---|
[HADOOP] pyspark / spark를 사용하여 큰 분산 데이터 세트 샘플링 (0) | 2019.06.15 |
[HADOOP] 하나의지도에 여러 줄의 텍스트 제공 (0) | 2019.06.15 |
[HADOOP] RDD가 아닌 Spark 프로그램에서 일반 텍스트 HDFS (또는 로컬) 파일을 쓸 수 있습니까? (0) | 2019.06.15 |
[HADOOP] (하둡) MapReduce - 체인 작업 - JobControl이 멈추지 않습니다 (0) | 2019.06.15 |