복붙노트

[HADOOP] 기본 키로 하이브 테이블을 만들 수 없습니다

HADOOP

기본 키로 하이브 테이블을 만들 수 없습니다

기본 키를 사용하여 하이브에서 외부 테이블을 만들 수 없습니다. 다음은 예제 코드입니다.

hive> create table exmp((name string),primary key(name));

다음과 같은 오류 메시지가 표시됩니다.

도와주세요.

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.하이브에는 기본 키와 외래 키가 없으므로 기본 키를 제거하고 실행하십시오.

    하이브에는 기본 키와 외래 키가 없으므로 기본 키를 제거하고 실행하십시오.

    테이블 exmp (이름 문자열)을 작성하십시오.

  4. ==============================

    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. ==============================

    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. ==============================

    6.이 시도

    이 시도

    create table exmp(name string,primary key(name));
    
  7. from https://stackoverflow.com/questions/28537042/unable-to-create-hive-table-with-primary-key by cc-by-sa and MIT license