Hive - Utwórz tabelę

W tym rozdziale wyjaśniono, jak utworzyć tabelę i wstawiać do niej dane. Konwencja tworzenia tabeli w HIVE jest bardzo podobna do tworzenia tabeli przy użyciu języka SQL.

Utwórz instrukcję tabeli

Utwórz tabelę to instrukcja używana do tworzenia tabeli w gałęzi. Składnia i przykład są następujące:

Składnia

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name

[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]

Przykład

Załóżmy, że musisz utworzyć tabelę o nazwie employee za pomocą CREATE TABLEkomunikat. W poniższej tabeli wymieniono pola i ich typy danych w tabeli pracowników:

Sr.No Nazwa pola Typ danych
1 Eid int
2 Nazwa Strunowy
3 Wynagrodzenie Pływak
4 Przeznaczenie strunowy

Następujące dane to komentarz, pola sformatowane w wierszach, takie jak terminator pola, terminator wierszy i typ zapisanego pliku.

COMMENT ‘Employee details’
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED IN TEXT FILE

Następujące zapytanie tworzy tabelę o nazwie employee korzystając z powyższych danych.

hive> 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;

Jeśli dodasz opcję JEŚLI NIE ISTNIEJE, gałąź zignoruje instrukcję w przypadku, gdy tabela już istnieje.

Po pomyślnym utworzeniu tabeli zobaczysz następującą odpowiedź:

OK
Time taken: 5.905 seconds
hive>

Program JDBC

Podano przykład programu JDBC do tworzenia tabeli.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveCreateTable {
   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);
      
      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
      
      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("CREATE TABLE IF NOT EXISTS "
         +" employee ( eid int, name String, "
         +" salary String, destignation String)"
         +" COMMENT ‘Employee details’"
         +" ROW FORMAT DELIMITED"
         +" FIELDS TERMINATED BY ‘\t’"
         +" LINES TERMINATED BY ‘\n’"
         +" STORED AS TEXTFILE;");
         
      System.out.println(“ Table employee created.”);
      con.close();
   }
}

Zapisz program w pliku o nazwie HiveCreateDb.java. Poniższe polecenia służą do kompilowania i wykonywania tego programu.

$ javac HiveCreateDb.java
$ java HiveCreateDb

Wynik

Table employee created.

Instrukcja ładowania danych

Generalnie po utworzeniu tabeli w SQL możemy wstawiać dane za pomocą instrukcji Insert. Ale w Hive możemy wstawiać dane za pomocą instrukcji LOAD DATA.

Podczas wstawiania danych do Hive lepiej jest używać LOAD DATA do przechowywania rekordów zbiorczych. Istnieją dwa sposoby ładowania danych: jeden z lokalnego systemu plików, a drugi z systemu plików Hadoop.

Składnia

Składnia danych ładowania jest następująca:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)]
  • LOCAL to identyfikator określający ścieżkę lokalną. Jest to opcjonalne.
  • OVERWRITE jest opcjonalne, aby nadpisać dane w tabeli.
  • PARTYCJA jest opcjonalna.

Przykład

Do tabeli wstawimy następujące dane. Jest to plik tekstowy o nazwiesample.txt w /home/user informator.

1201  Gopal       45000    Technical manager
1202  Manisha     45000    Proof reader
1203  Masthanvali 40000    Technical writer
1204  Kiran       40000    Hr Admin
1205  Kranthi     30000    Op Admin

Następujące zapytanie ładuje podany tekst do tabeli.

hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;

Po pomyślnym pobraniu zobaczysz następującą odpowiedź:

OK
Time taken: 15.905 seconds
hive>

Program JDBC

Poniżej podano program JDBC do załadowania danych do tabeli.

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveLoadData {

   private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
   
   public static void main(String[] args) throws SQLException {
   
      // Register driver and create driver instance
      Class.forName(driverName);
      
      // get connection
      Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
      
      // create statement
      Statement stmt = con.createStatement();
      
      // execute statement
      stmt.executeQuery("LOAD DATA LOCAL INPATH '/home/user/sample.txt'" + "OVERWRITE INTO TABLE employee;");
      System.out.println("Load Data into employee successful");
      
      con.close();
   }
}

Zapisz program w pliku o nazwie HiveLoadData.java. Użyj następujących poleceń, aby skompilować i wykonać ten program.

$ javac HiveLoadData.java
$ java HiveLoadData

Wynik:

Load Data into employee successful