[HADOOP] 아파치 기린과 하이브 - JDBC - 스토리지 - 핸들러 빌드 큐브 문제
HADOOP아파치 기린과 하이브 - JDBC - 스토리지 - 핸들러 빌드 큐브 문제
이제 임 하이브에 테이블을 만드는 하이브 - JDBC - 스토리지 - 처리기를 사용하여 : 참조 : https://github.com/qubole/Hive-JDBC-Storage-Handler 하둡 정보 : - 하둡 2.7.3 - 하이브 1.2.1 개요:
외부 테이블의 tbl_google_stats_adgroups_summary을 CREATE
(
'디시리얼라이저에서'CAMPAIGNID BIGINT의 COMMENT,
'디시리얼라이저에서'adGroupId입니다 BIGINT의 COMMENT,
'디시리얼라이저에서'localadgroupid BIGINT의 COMMENT,
'디시리얼라이저에서'위치 FLOAT의 COMMENT,
'디시리얼라이저에서'FLOAT의 COMMENT 비용,
'디시리얼라이저에서'인상 INT의 COMMENT,
'디시리얼라이저에서'INT의 COMMENT를 클릭,
'디시리얼라이저에서'변환의 INT의 COMMENT,
'디시리얼라이저에서'conversionsbydate INT의 COMMENT,
'디시리얼라이저에서'uniqueconversions INT의 COMMENT,
'디시리얼라이저에서'uniqueconversionsbydate INT의 COMMENT,
'디시리얼라이저에서'TIMESTAMP의 COMMENT를 datestats,
'디시리얼라이저에서'수량 INT의 COMMENT,
'디시리얼라이저에서'INT의 COMMENT를 quantitybydate,
'디시리얼라이저에서'수익 FLOAT의 COMMENT,
'디시리얼라이저에서'revenuebydate FLOAT의 COMMENT,
'디시리얼라이저에서'uniquerevenue FLOAT의 COMMENT,
'디시리얼라이저에서'uniquerevenuebydate FLOAT의 COMMENT,
'디시리얼라이저에서'의 DeviceID INT의 COMMENT,
'디시리얼라이저에서'conv1perclick INT의 COMMENT,
'디시리얼라이저에서'adwordstype INT의 COMMENT
)
행 형식 SERDE 'org.apache.hadoop.hive.jdbc.storagehandler.JdbcSerDe'
( 'serialization.format'= '1') SERDEPROPERTIES WITH 'org.apache.hadoop.hive.jdbc.storagehandler.JdbcStorageHandler'에 저장 TBLPROPERTIES ( 'mapred.jdbc.driver.class'= 'com.mysql.jdbc.Driver ','mapred.jdbc.hive.lazy.split '='false '로,
'mapred.jdbc.input.table.name'= 'tbl_adgroup'
'mapred.jdbc.password'= '', 'mapred.jdbc.url'= 'JDBC한다 : mysql : // localhost를 : 3306 /
INSERT 덮어 쓰기 표를 선택 default.kylin_intermediate_test_cube_adgroup_mysql_164b0ca3_6050_49bb_838b_49ee49f6d1e5 TBL_GOOGLE_STATS_ADGROUPS_SUMMARY.CAMPAIGNID , TBL_GOOGLE_STATS_ADGROUPS_SUMMARY.ADGROUPID , TBL_GOOGLE_STATS_ADGROUPS_SUMMARY.POSITION , TBL_GOOGLE_STATS_ADGROUPS_SUMMARY.DATESTATS , TBL_GOOGLE_STATS_ADGROUPS_SUMMARY.DEVICEID , TBL_GOOGLE_STATS_ADGROUPS_SUMMARY.ADWORDSTYPE , TBL_GOOGLE_STATS_ADGROUPS_SUMMARY.COST FROM <데이터베이스> TBL_GOOGLE_STATS_ADGROUPS_SUMMARY로 .TBL_GOOGLE_STATS_ADGROUPS_SUMMARY;
상태 : 실패 작업을 실행하는 동안 실패 : java.lang.RuntimeException가를 : org.apache.hadoop 정점은 vertexName =지도 1, vertexId = vertex_1478248621961_0005_1_00, 진단 = [작업은 진단 = [TaskAttempt 0, 정보 = [오류 실패, TASKID = task_1478248621961_0005_1_00_000000, 실패, 실패 .hive.ql.metadata.HiveException : 때 java.io.IOException : 때 java.io.IOException : InputFormatWrapper는 동일한 키 및 값 개체를 반환하지 않습니다 RecordReaders을 지원할 수 없습니다. 현재 리더 클래스 : 클래스 org.apache.hadoop.mapreduce.lib.db.MySQLDBRecordReader org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor에서 (TezProcessor.java:173) org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run에서 (TezProcessor.java:139) org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run에서 (LogicalIOProcessorRuntimeTask.java:347) 에서 org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable $ 1.run (TezTaskRunner.java:194) 에서 org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable $ 1.run (TezTaskRunner.java:185) java.security.AccessController.doPrivileged에서 (기본 방법) javax.security.auth.Subject.doAs에서 (Subject.java:422) org.apache.hadoop.security.UserGroupInformation.doAs에서 (UserGroupInformation.java:1724) org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal에서 (TezTaskRunner.java:185) org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal에서 (TezTaskRunner.java:181) org.apache.tez.common.CallableWithNdc.call에서 (CallableWithNdc.java:36) java.util.concurrent.FutureTask.run에서 (FutureTask.java:266) java.util.concurrent.ThreadPoolExecutor.runWorker에서 (ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617)에서 java.lang.Thread.run에서 (Thread.java:745) org.apache.hadoop.hive.ql.metadata.HiveException : 의해 발생 때 java.io.IOException : 때 java.io.IOException : InputFormatWrapper는 동일한 키 및 값 개체를 반환하지 않습니다 RecordReaders을 지원할 수 없습니다. 현재 리더 클래스 : 클래스 org.apache.hadoop.mapreduce.lib.db.MySQLDBRecordReader org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.pushRecord에서 (MapRecordSource.java:71) org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.run에서 (MapRecordProcessor.java:325) org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor에서 (TezProcessor.java:150) ... 14 개
누구든지 나를 도울 수 있습니까? 내가 하둡 시스템의 구조에 대해 궁금했습니다 옆에 :
일부 밖으로 보고서 데이터는 데이터를 업데이트해야하기 때문에 이제 우리는 MySQL은 같은 트랜잭션 SQL 엔진이 필요합니다. 하이브 ..., 그러나 그것은 UPDATE 내부 조인을 지원하지 ACID 테이블을 제공하고,이 일을 정말 우리의 bussiness에 문제가 있습니다. 그래서 그게 왜 설치 JDBCStorageHandler. 따라서이 구조는 데이터의 억 개 행을 처리 할 수 있습니까? 고마워요!
해결법
from https://stackoverflow.com/questions/40419387/problems-with-apache-kylin-and-hive-jdbc-storage-handler-when-build-cube by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 때 JVM (또는 OS) 비정상적으로 파일 핸들러를 닫을 수 있습니다? (0) | 2019.10.20 |
---|---|
[HADOOP] java.lang.OutOfMemoryError와 얻기 :지도 감소 제출하는 동안 GC 오버 헤드 제한 초과 (0) | 2019.10.20 |
[HADOOP] 돼지 - 최대 개수를 가져옵니다 (0) | 2019.10.19 |
[HADOOP] 하이브 외부 테이블은 HDFS의 새로운 마루 파일을 검색 할 수 있습니다 (0) | 2019.10.19 |
[HADOOP] 하이브에서 UDF 결과를 검색 (0) | 2019.10.19 |