[HADOOP] 기본 키로 하이브 테이블을 만들 수 없습니다
HADOOP기본 키로 하이브 테이블을 만들 수 없습니다
기본 키를 사용하여 하이브에서 외부 테이블을 만들 수 없습니다. 다음은 예제 코드입니다.
hive> create table exmp((name string),primary key(name));
다음과 같은 오류 메시지가 표시됩니다.
도와주세요.
해결법
-
==============================
1.하이브 테이블과 관련된 다른 기능이 있으면 하이브에 기본 키가 없습니다.
하이브 테이블과 관련된 다른 기능이 있으면 하이브에 기본 키가 없습니다.
CREATE DATABASE [IF NOT EXISTS] userdb; SHOW DATABASES; DROP DATABASE IF EXISTS userdb; DROP DATABASE IF EXISTS userdb CASCADE; CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String, destination String) COMMENT "Employee details" ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t" LINES TERMINATED BY "\n" STORED AS TEXTFILE; LOAD DATA LOCAL INPATH '/home/user/sample.txt' OVERWRITE INTO TABLE employee; ALTER TABLE employee RENAME TO emp; desc tablename; ALTER TABLE employee CHANGE name ename String; hive> ALTER TABLE employee CHANGE salary salary Double; ALTER TABLE employee ADD COLUMNS ( dept STRING COMMENT 'Department name'); ALTER TABLE employee REPLACE COLUMNS ( eid INT empid Int, ename STRING name String); DROP TABLE IF EXISTS employee; SHOW TABLES; SELECT * FROM employee WHERE Salary>40000 && Dept=TP; CREATE VIEW emp_30000 AS SELECT * FROM employee WHERE salary>30000; DROP VIEW emp_30000;
-
==============================
2.공식 페이지에서 : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
공식 페이지에서 : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
테이블을 작성하는 구문에 다음과 같이 포함되었습니다.
constraint_specification: : [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE ] [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE .
따라서 기본 키가있는 테이블을 하이브로 만들 수 있습니다.
버전 정보
Hive 2.1.0 (HIVE-13290) 기준
Hive에는 검증되지 않은 기본 및 외래 키 제약 조건에 대한 지원이 포함됩니다. 제약 조건이있는 경우 일부 SQL 도구가보다 효율적인 쿼리를 생성합니다. 이러한 제약 조건이 검증되지 않았기 때문에 업스트림 시스템은 Hive로로드되기 전에 데이터 무결성. 예:
CREATE TABLE pk( id1 integer, id2 integer, primary key(id1, id2) disable novalidate ); CREATE TABLE fk( id1 integer, id2 integer, constraint c1 foreign key(id1, id2) references pk(id2, id1) disable novalidate );
-
==============================
3.하이브에는 기본 키와 외래 키가 없으므로 기본 키를 제거하고 실행하십시오.
하이브에는 기본 키와 외래 키가 없으므로 기본 키를 제거하고 실행하십시오.
테이블 exmp (이름 문자열)을 작성하십시오.
-
==============================
4.먼저, 더비에는 키가 없습니다. 둘째, 일부 키는 하이브에서 키워드와 중복 될 수 있으며 작은 따옴표를 추가해야합니다. 내 경우에는 쿼리 오류가 발생합니다.
먼저, 더비에는 키가 없습니다. 둘째, 일부 키는 하이브에서 키워드와 중복 될 수 있으며 작은 따옴표를 추가해야합니다. 내 경우에는 쿼리 오류가 발생합니다.
create table NYSE (exchange String,stock_symbol String,stock_date String,stock_price_open double, stock_price_high double, stock_price_low double, stock_price_close double, stock_volume double, stock_price_adj_close double) row format delimited fields terminated by ‘,’;
그것은해야한다
create table NYSE (`exchange` String,stock_symbol String,stock_date String,stock_price_open double, stock_price_high double, stock_price_low double, stock_price_close double, stock_volume double, stock_price_adj_close double) row format delimited fields terminated by ',';
-
==============================
5.데이터베이스가 아니고 하이브 작업에서 레코드 기반이 아닌 파일 기반이기 때문에 Hive에는 기본 키 개념이 없습니다.
데이터베이스가 아니고 하이브 작업에서 레코드 기반이 아닌 파일 기반이기 때문에 Hive에는 기본 키 개념이 없습니다.
이 시도
create table table_name ( row_number() over() as rowId operation name string, age Int, address string) row format delimited fields terminated by ',' stored as textfile;
여기에서 rowId를 고유 한 것으로 간주하고 작업을 수행하십시오.
-
==============================
6.이 시도
이 시도
create table exmp(name string,primary key(name));
from https://stackoverflow.com/questions/28537042/unable-to-create-hive-table-with-primary-key by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Dataframe.toPandas는 항상 드라이버 노드 또는 작업자 노드에 있습니까? (0) | 2019.09.15 |
---|---|
[HADOOP] hadoop-streaming.jar는 각 줄의 끝에 x'09 '를 추가합니다 (0) | 2019.09.15 |
[HADOOP] 복잡한 편집을 구현하는 방법은 무엇입니까? (0) | 2019.09.15 |
[HADOOP] 하둡과 NLTK : 스톱 워드로 실패 (0) | 2019.09.15 |
[HADOOP] HDFS에서 다른 블록 배치 정책을 가질 수 있습니까? (0) | 2019.09.15 |