آموزش Hive

آموزش Hive – ایجاد جدول

در این بخش نحوه ی ایجاد جدول و اضافه کردن اطلاعات به آن را آموزش میدیم. ایجاد جدول در Hive مشابه ایجاد جدول در SQL است.

عبارتِ Create Table

Create Table عبارتیِه که برای ایجاد جدول در Hive به کار میره. مثال و شکل دستوری این عبارت بصورت زیرِه:

شکل دستوری

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]

مثال

فرض می کنیم با عبارت CREATE TABLE جدولی به نامِ employee ایجاد کردیم. جدول زیر فیلدهای جدولِ employee را به همراه نوع داده ای شان نشان میده:

شماره

نام فیلد

نوع داده

1

Eid

int

2

Name

String

3

Salary

Float

4

Designation

string

اطلاعات زیر، فیلدهای توضیحی با فرمت بندی سطری هستن، مثلِ  Field terminator, Lines terminator و نوع فایل ذخیره شده.

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

کوئری زیر با استفاده از اطلاعات بالا، جدولی به نامِ employee ایجاد می کنه.

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;

درصورتی که از آپشنِ IF NOT EXISTS استفاده کرده باشین، درصورتی که جدول از قبل موجود باشه Hive، این عبارت را نادیده میگیره.

در صورتی که جدول با موفقیت ایجاد بشه، پاسخی به صورت زیر خواهید دید:

OK
Time taken: 5.905 seconds
hive>

برنامه ی JDBC

در ادامه مثالی از برنامه ی JDBC را برای ایجاد جدول مشاهده می کنین:

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();
   }
}

برنامه را در فایلی به نامِ HiveCreateDb.java ذخیره کنین. در ادامه دستوراتی برای کامپایل و اجرای این برنامه مشاهده می کنین.

$ javac HiveCreateDb.java
$ java HiveCreateDb

خروجی

Table employee created.

عبارتِ Load Data

بطور کلی، در SQL می توانیم بعد از ایجاد جدول، با استفاده از عبارتِ Insert، اطلاعات مورد نظرمان را وارد جدول کنیم. ولی انجام این کار در Hive با استفاده از عبارتِ LOAD DATA انجام میشه.

بهتره هنگام وارد کردن اطلاعات در جدول، برای ذخیره کردن رکوردهای bulk از LOAD DATA استفاده کنین. دو روش برای لود کردن اطلاعات وجود داره: یکی از طریق فایل سیستم محلی و دیگری از طریق فایل سیستمِ Hadoop.

شکل دستوری

شکل دستوری load data بصورت زیرِه:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)]
  •      LOCAL شناساگری برای تعیین مسیر محلیِه. این عبارت اختیاریِه.
  •      OVERWRITE برای بازنویسی داده ها توی جدولِه و اختیاریِه.
  •      PARTITION اختیاریِه.

مثال

در این قسمت، اطلاعات زیر را در جدول وارد می کنیم. اطلاعات زیر، فایل متنی به نامِ sample.txt است که در دایرکتوریِ  /home/user قرار داره.

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

کوئری زیر متن داده شده را وارد جدول می کنه.

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

در صورتی که عملیات با موفقیت انجام بشه، پاسخی به صورت زیر دریافت خواهید کرد:

OK
Time taken: 15.905 seconds
hive>

برنامه ی JDBC

در ادامه مثالی از برنامه ی JDBC برای وارد کردن اطلاعات در جدول را مشاهده می کنین:

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();
   }
}

برنامه را در فایلی به نامِ HiveLoadData.java ذخیره کنین. در ادامه دستوراتی برای کامپایل و اجرای این برنامه مشاهده می کنین.

$ javac HiveLoadData.java
$ java HiveLoadData

خروجی

Load Data into employee successful
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش Hive

Learn Hive

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...