Sqoop - Panduan Cepat

Sistem manajemen aplikasi tradisional, yaitu interaksi aplikasi dengan database relasional menggunakan RDBMS, merupakan salah satu sumber yang menghasilkan Big Data. Big Data tersebut, yang dihasilkan oleh RDBMS, disimpan dalam RelasionalDatabase Servers dalam struktur database relasional.

Ketika penyimpanan dan penganalisis Big Data seperti MapReduce, Hive, HBase, Cassandra, Pig, dll. Dari ekosistem Hadoop muncul, mereka membutuhkan alat untuk berinteraksi dengan server database relasional untuk mengimpor dan mengekspor Big Data yang berada di dalamnya. Di sini, Sqoop menempati tempat di ekosistem Hadoop untuk menyediakan interaksi yang layak antara server database relasional dan HDFS Hadoop.

Sqoop - “SQL ke Hadoop dan Hadoop ke SQL”

Sqoop adalah alat yang dirancang untuk mentransfer data antara Hadoop dan server database relasional. Ini digunakan untuk mengimpor data dari database relasional seperti MySQL, Oracle ke Hadoop HDFS, dan mengekspor dari sistem file Hadoop ke database relasional. Ini disediakan oleh Apache Software Foundation.

Bagaimana Sqoop Bekerja?

Gambar berikut menjelaskan alur kerja Sqoop.

Impor Sqoop

Alat impor mengimpor tabel individu dari RDBMS ke HDFS. Setiap baris dalam tabel diperlakukan sebagai catatan di HDFS. Semua record disimpan sebagai data teks dalam file teks atau sebagai data biner di file Avro dan Sequence.

Ekspor Sqoop

Alat ekspor mengekspor sekumpulan file dari HDFS kembali ke RDBMS. File yang diberikan sebagai input ke Sqoop berisi record, yang disebut sebagai baris dalam tabel. Itu dibaca dan diurai menjadi sekumpulan record dan dibatasi dengan pembatas yang ditentukan pengguna.

Karena Sqoop adalah sub-proyek dari Hadoop, Sqoop hanya dapat bekerja di sistem operasi Linux. Ikuti langkah-langkah yang diberikan di bawah ini untuk menginstal Sqoop di sistem Anda.

Langkah 1: Memverifikasi Instalasi JAVA

Anda harus menginstal Java di sistem Anda sebelum menginstal Sqoop. Mari kita verifikasi instalasi Java menggunakan perintah berikut -

$ java –version

Jika Java sudah diinstal di sistem Anda, Anda akan melihat respons berikut -

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Jika Java tidak diinstal pada sistem Anda, ikuti langkah-langkah yang diberikan di bawah ini.

Menginstal Java

Ikuti langkah-langkah sederhana yang diberikan di bawah ini untuk menginstal Java di sistem Anda.

Langkah 1

Unduh Java (JDK <versi terbaru> - X64.tar.gz) dengan mengunjungi tautan berikut .

Kemudian jdk-7u71-linux-x64.tar.gz akan diunduh ke sistem Anda.

Langkah 2

Umumnya, Anda dapat menemukan file Java yang diunduh di folder Unduhan. Verifikasi dan ekstrak file jdk-7u71-linux-x64.gz menggunakan perintah berikut.

$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

LANGKAH 3

Agar Java tersedia untuk semua pengguna, Anda harus memindahkannya ke lokasi "/ usr / local /". Buka root, dan ketik perintah berikut.

$ su
password:

# mv jdk1.7.0_71 /usr/local/java
# exitStep IV:

LANGKAH 4

Untuk menyiapkan variabel PATH dan JAVA_HOME, tambahkan perintah berikut ke file ~ / .bashrc.

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

Sekarang terapkan semua perubahan ke dalam sistem yang sedang berjalan.

$ source ~/.bashrc

LANGKAH 5

Gunakan perintah berikut untuk mengkonfigurasi alternatif Java -

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

Sekarang verifikasi penginstalan menggunakan perintah java -version dari terminal seperti dijelaskan di atas.

Langkah 2: Memverifikasi Pemasangan Hadoop

Hadoop harus diinstal pada sistem Anda sebelum menginstal Sqoop. Mari kita verifikasi instalasi Hadoop menggunakan perintah berikut -

$ hadoop version

Jika Hadoop sudah terinstal di sistem Anda, maka Anda akan mendapatkan respons berikut -

Hadoop 2.4.1
--
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4

Jika Hadoop tidak diinstal pada sistem Anda, lanjutkan dengan langkah-langkah berikut -

Mendownload Hadoop

Unduh dan ekstrak Hadoop 2.4.1 dari Apache Software Foundation menggunakan perintah berikut.

$ su
password:

# cd /usr/local
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit

Menginstal Hadoop dalam Pseudo Distributed Mode

Ikuti langkah-langkah yang diberikan di bawah ini untuk menginstal Hadoop 2.4.1 dalam mode pseudo-didistribusikan.

Langkah 1: Menyiapkan Hadoop

Anda dapat menyetel variabel lingkungan Hadoop dengan menambahkan perintah berikut ke file ~ / .bashrc.

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

Sekarang, terapkan semua perubahan ke dalam sistem yang sedang berjalan.

$ source ~/.bashrc

Langkah 2: Konfigurasi Hadoop

Anda dapat menemukan semua file konfigurasi Hadoop di lokasi "$ HADOOP_HOME / etc / hadoop". Anda perlu membuat perubahan yang sesuai pada file konfigurasi tersebut sesuai dengan infrastruktur Hadoop Anda.

$ cd $HADOOP_HOME/etc/hadoop

Untuk mengembangkan program Hadoop menggunakan java, Anda harus mengatur ulang variabel lingkungan java di hadoop-env.sh file dengan mengganti nilai JAVA_HOME dengan lokasi java di sistem Anda.

export JAVA_HOME=/usr/local/java

Diberikan di bawah ini adalah daftar file yang perlu Anda edit untuk mengkonfigurasi Hadoop.

core-site.xml

File core-site.xml berisi informasi seperti nomor port yang digunakan untuk instance Hadoop, memori yang dialokasikan untuk sistem file, batas memori untuk menyimpan data, dan ukuran buffer Baca / Tulis.

Buka core-site.xml dan tambahkan properti berikut di antara tag <configuration> dan </configuration>.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000 </value>
   </property>
</configuration>

hdfs-site.xml

File hdfs-site.xml berisi informasi seperti nilai data replikasi, jalur namenode, dan jalur datanode sistem file lokal Anda. Artinya tempat di mana Anda ingin menyimpan infrastruktur Hadoop.

Mari kita asumsikan data berikut.

dfs.replication (data replication value) = 1

(In the following path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Buka file ini dan tambahkan properti berikut di antara tag <configuration>, </configuration> di file ini.

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
   
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
   </property>
   
   <property>
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value>
   </property>
</configuration>

Note - Dalam file di atas, semua nilai properti ditentukan pengguna dan Anda dapat membuat perubahan sesuai dengan infrastruktur Hadoop Anda.

yarn-site.xml

File ini digunakan untuk mengkonfigurasi benang menjadi Hadoop. Buka file yarn-site.xml dan tambahkan properti berikut di antara tag <configuration>, </configuration> di file ini.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>

mapred-site.xml

File ini digunakan untuk menentukan kerangka MapReduce mana yang kita gunakan. Secara default, Hadoop berisi template yarn-site.xml. Pertama-tama, Anda perlu menyalin file dari mapred-site.xml.template ke file mapred-site.xml menggunakan perintah berikut.

$ cp mapred-site.xml.template mapred-site.xml

Buka file mapred-site.xml dan tambahkan properti berikut di antara tag <configuration>, </configuration> di file ini.

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Memverifikasi Instalasi Hadoop

Langkah-langkah berikut digunakan untuk memverifikasi penginstalan Hadoop.

Langkah 1: Penyiapan Node Nama

Siapkan namenode menggunakan perintah “hdfs namenode -format” sebagai berikut.

$ cd ~
$ hdfs namenode -format

Hasil yang diharapkan adalah sebagai berikut.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/

Langkah 2: Memverifikasi Hadoop dfs

Perintah berikut digunakan untuk memulai dfs. Menjalankan perintah ini akan memulai sistem file Hadoop Anda.

$ start-dfs.sh

Output yang diharapkan adalah sebagai berikut -

10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]

Langkah 3: Memverifikasi Skrip Benang

Perintah berikut digunakan untuk memulai skrip benang. Menjalankan perintah ini akan memulai benang daemon Anda.

$ start-yarn.sh

Output yang diharapkan adalah sebagai berikut -

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting node manager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Langkah 4: Mengakses Hadoop di Browser

Nomor port default untuk mengakses Hadoop adalah 50070. Gunakan URL berikut untuk mendapatkan layanan Hadoop di browser Anda.

http://localhost:50070/

Gambar berikut menggambarkan browser Hadoop.

Langkah 5: Verifikasi Semua Aplikasi untuk Cluster

Nomor port default untuk mengakses semua aplikasi cluster adalah 8088. Gunakan url berikut untuk mengunjungi layanan ini.

http://localhost:8088/

Gambar berikut menggambarkan browser cluster Hadoop.

Langkah 3: Mendownload Sqoop

Kami dapat mengunduh versi terbaru Sqoop dari tautan berikut Untuk tutorial ini, kami menggunakan versi 1.4.5, yaitu,sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz.

Langkah 4: Menginstal Sqoop

Perintah berikut digunakan untuk mengekstrak bola tar Sqoop dan memindahkannya ke direktori “/ usr / lib / sqoop”.

$tar -xvf sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz
$ su
password:

# mv sqoop-1.4.4.bin__hadoop-2.0.4-alpha /usr/lib/sqoop
#exit

Langkah 5: Konfigurasi bashrc

Anda harus menyiapkan lingkungan Sqoop dengan menambahkan baris berikut ke ~ /.bashrc file -

#Sqoop
export SQOOP_HOME=/usr/lib/sqoop export PATH=$PATH:$SQOOP_HOME/bin

Perintah berikut digunakan untuk mengeksekusi ~ /.bashrc mengajukan.

$ source ~/.bashrc

Langkah 6: Konfigurasi Sqoop

Untuk mengkonfigurasi Sqoop dengan Hadoop, Anda perlu mengedit file sqoop-env.sh file, yang ditempatkan di $SQOOP_HOME/confdirektori. Pertama-tama, Redirect ke direktori konfigurasi Sqoop dan salin file template menggunakan perintah berikut -

$ cd $SQOOP_HOME/conf
$ mv sqoop-env-template.sh sqoop-env.sh

Buka sqoop-env.sh dan edit baris berikut -

export HADOOP_COMMON_HOME=/usr/local/hadoop 
export HADOOP_MAPRED_HOME=/usr/local/hadoop

Langkah 7: Unduh dan Konfigurasikan mysql-connector-java

Kami dapat mengunduh mysql-connector-java-5.1.30.tar.gzfile dari tautan berikut .

Perintah berikut digunakan untuk mengekstrak tarball mysql-connector-java dan memindahkannya mysql-connector-java-5.1.30-bin.jar ke / usr / lib / sqoop / lib direktori.

$ tar -zxf mysql-connector-java-5.1.30.tar.gz
$ su
password:

# cd mysql-connector-java-5.1.30
# mv mysql-connector-java-5.1.30-bin.jar /usr/lib/sqoop/lib

Langkah 8: Memverifikasi Sqoop

Perintah berikut digunakan untuk memverifikasi versi Sqoop.

$ cd $SQOOP_HOME/bin
$ sqoop-version

Output yang diharapkan -

14/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
Sqoop 1.4.5 git commit id 5b34accaca7de251fc91161733f906af2eddbe83
Compiled by abe on Fri Aug 1 11:19:26 PDT 2014

Penginstalan Sqoop selesai.

Bab ini menjelaskan cara mengimpor data dari database MySQL ke Hadoop HDFS. 'Alat Impor' mengimpor tabel individu dari RDBMS ke HDFS. Setiap baris dalam tabel diperlakukan sebagai catatan di HDFS. Semua record disimpan sebagai data teks dalam file teks atau sebagai data biner di file Avro dan Sequence.

Sintaksis

Sintaks berikut digunakan untuk mengimpor data ke HDFS.

$ sqoop import (generic-args) (import-args) 
$ sqoop-import (generic-args) (import-args)

Contoh

Mari kita ambil contoh tiga tabel bernama emp, emp_add, dan emp_contact, yang ada di database bernama userdb di server database MySQL.

Ketiga tabel dan datanya adalah sebagai berikut.

emp:

Indo nama derajat gaji dept
1201 gopal Pengelola 50.000 TP
1202 manisha Pembaca bukti 50.000 TP
1203 khalil php dev 30.000 AC
1204 prasanth php dev 30.000 AC
1204 kranthi admin 20.000 TP

emp_add:

Indo hno jalan kota
1201 288A vgiri jublee
1202 108I aoc detik-buruk
1203 144Z pgutta hid
1204 78B kota Tua detik-buruk
1205 720X hitec detik-buruk

emp_contact:

Indo phno surel
1201 2356742 [email protected]
1202 1661663 [email protected]
1203 8887776 [email protected]
1204 9988774 [email protected]
1205 1231231 [email protected]

Mengimpor Tabel

Alat Sqoop 'import' digunakan untuk mengimpor data tabel dari tabel ke sistem file Hadoop sebagai file teks atau file biner.

Perintah berikut digunakan untuk mengimpor file emp tabel dari server database MySQL ke HDFS.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp --m 1

Jika berhasil dijalankan, maka Anda mendapatkan output berikut.

14/12/22 15:24:54 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
14/12/22 15:24:56 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
14/12/22 15:24:56 INFO tool.CodeGenTool: Beginning code generation
14/12/22 15:24:58 INFO manager.SqlManager: Executing SQL statement: 
   SELECT t.* FROM `emp` AS t LIMIT 1
14/12/22 15:24:58 INFO manager.SqlManager: Executing SQL statement: 
   SELECT t.* FROM `emp` AS t LIMIT 1
14/12/22 15:24:58 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/local/hadoop
14/12/22 15:25:11 INFO orm.CompilationManager: Writing jar file: 
   /tmp/sqoop-hadoop/compile/cebe706d23ebb1fd99c1f063ad51ebd7/emp.jar
-----------------------------------------------------
-----------------------------------------------------
14/12/22 15:25:40 INFO mapreduce.Job: The url to track the job: 
   http://localhost:8088/proxy/application_1419242001831_0001/
14/12/22 15:26:45 INFO mapreduce.Job: Job job_1419242001831_0001 running in uber mode : 
   false
14/12/22 15:26:45 INFO mapreduce.Job: map 0% reduce 0%
14/12/22 15:28:08 INFO mapreduce.Job: map 100% reduce 0%
14/12/22 15:28:16 INFO mapreduce.Job: Job job_1419242001831_0001 completed successfully
-----------------------------------------------------
-----------------------------------------------------
14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Transferred 145 bytes in 177.5849 seconds 
   (0.8165 bytes/sec)
14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Retrieved 5 records.

Untuk memverifikasi data yang diimpor di HDFS, gunakan perintah berikut.

$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*

Ini menunjukkan kepada Anda emp data tabel dan bidang dipisahkan dengan koma (,).

1201, gopal,    manager, 50000, TP
1202, manisha,  preader, 50000, TP
1203, kalil,    php dev, 30000, AC
1204, prasanth, php dev, 30000, AC
1205, kranthi,  admin,   20000, TP

Mengimpor ke Direktori Target

Kita dapat menentukan direktori target saat mengimpor data tabel ke HDFS menggunakan alat impor Sqoop.

Berikut ini adalah sintaks untuk menentukan direktori target sebagai opsi untuk perintah impor Sqoop.

--target-dir <new or exist directory in HDFS>

Perintah berikut digunakan untuk mengimpor emp_add tabel data ke dalam direktori '/ queryresult'.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp_add \
--m 1 \
--target-dir /queryresult

Perintah berikut digunakan untuk memverifikasi data yang diimpor dalam bentuk direktori / queryresult emp_add meja.

$ $HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-*

Ini akan menunjukkan kepada Anda data tabel emp_add dengan bidang dipisahkan koma (,).

1201, 288A, vgiri,   jublee
1202, 108I, aoc,     sec-bad
1203, 144Z, pgutta,  hyd
1204, 78B,  oldcity, sec-bad
1205, 720C, hitech,  sec-bad

Impor Subset Data Tabel

Kita dapat mengimpor subset dari tabel menggunakan klausa 'where' di alat impor Sqoop. Ini mengeksekusi kueri SQL yang sesuai di server database masing-masing dan menyimpan hasilnya di direktori target di HDFS.

Sintaks klausa where adalah sebagai berikut.

--where <condition>

Perintah berikut digunakan untuk mengimpor subset dari emp_adddata tabel. Kueri subset adalah untuk mengambil id dan alamat karyawan, yang tinggal di kota Secunderabad.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp_add \
--m 1 \
--where “city =’sec-bad’” \
--target-dir /wherequery

Perintah berikut digunakan untuk memverifikasi data yang diimpor di direktori / wherequery dari emp_add meja.

$ $HADOOP_HOME/bin/hadoop fs -cat /wherequery/part-m-*

Ini akan menunjukkan kepada Anda emp_add data tabel dengan bidang yang dipisahkan koma (,).

1202, 108I, aoc,     sec-bad
1204, 78B,  oldcity, sec-bad
1205, 720C, hitech,  sec-bad

Impor Tambahan

Impor inkremental adalah teknik yang hanya mengimpor baris yang baru ditambahkan dalam tabel. Anda harus menambahkan opsi 'incremental', 'check-column', dan 'last-value' untuk melakukan impor tambahan.

Sintaks berikut digunakan untuk opsi tambahan dalam perintah impor Sqoop.

--incremental <mode>
--check-column <column name>
--last value <last check column value>

Mari kita asumsikan data yang baru ditambahkan ke emp tabel adalah sebagai berikut -

1206, satish p, grp des, 20000, GR

Perintah berikut digunakan untuk melakukan impor inkremental di file emp meja.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp \
--m 1 \
--incremental append \
--check-column id \
-last value 1205

Perintah berikut digunakan untuk memverifikasi data yang diimpor dari emp tabel ke direktori emp / HDFS.

$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*

Ini menunjukkan kepada Anda emp data tabel dengan bidang yang dipisahkan koma (,).

1201, gopal,    manager, 50000, TP
1202, manisha,  preader, 50000, TP
1203, kalil,    php dev, 30000, AC
1204, prasanth, php dev, 30000, AC
1205, kranthi,  admin,   20000, TP
1206, satish p, grp des, 20000, GR

Perintah berikut digunakan untuk melihat baris yang dimodifikasi atau baru ditambahkan dari emp meja.

$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*1

Ini menunjukkan kepada Anda baris yang baru ditambahkan ke emp tabel dengan bidang yang dipisahkan koma (,).

1206, satish p, grp des, 20000, GR

Bab ini menjelaskan cara mengimpor semua tabel dari server database RDBMS ke HDFS. Setiap data tabel disimpan dalam direktori terpisah dan nama direktori sama dengan nama tabel.

Sintaksis

Sintaks berikut digunakan untuk mengimpor semua tabel.

$ sqoop import-all-tables (generic-args) (import-args) 
$ sqoop-import-all-tables (generic-args) (import-args)

Contoh

Mari kita ambil contoh mengimpor semua tabel dari userdbdatabase. Daftar tabel yang databaseuserdb berisi adalah sebagai berikut.

+--------------------+
 |      Tables        |
 +--------------------+
 |      emp           |
 |      emp_add       |
 |      emp_contact   |
 +--------------------+

Perintah berikut digunakan untuk mengimpor semua tabel dari userdb database.

$ sqoop import-all-tables \
--connect jdbc:mysql://localhost/userdb \
--username root

Note - Jika Anda menggunakan import-all-tables, setiap tabel dalam database tersebut harus memiliki bidang kunci utama.

Perintah berikut digunakan untuk memverifikasi semua data tabel ke database userdb di HDFS.

$ $HADOOP_HOME/bin/hadoop fs -ls

Ini akan menunjukkan kepada Anda daftar nama tabel dalam database userdb sebagai direktori.

Keluaran

drwxr-xr-x - hadoop supergroup 0 2014-12-22 22:50 _sqoop
drwxr-xr-x - hadoop supergroup 0 2014-12-23 01:46 emp
drwxr-xr-x - hadoop supergroup 0 2014-12-23 01:50 emp_add
drwxr-xr-x - hadoop supergroup 0 2014-12-23 01:52 emp_contact

Bab ini menjelaskan cara mengekspor data kembali dari HDFS ke database RDBMS. Tabel target harus ada di database target. File yang diberikan sebagai input ke Sqoop berisi record, yang disebut baris dalam tabel. Itu dibaca dan diurai menjadi sekumpulan record dan dibatasi dengan pembatas yang ditentukan pengguna.

Operasi default adalah memasukkan semua record dari file input ke tabel database menggunakan pernyataan INSERT. Dalam mode pembaruan, Sqoop menghasilkan pernyataan UPDATE yang menggantikan catatan yang ada ke dalam database.

Sintaksis

Berikut ini adalah sintaks untuk perintah ekspor.

$ sqoop export (generic-args) (export-args) 
$ sqoop-export (generic-args) (export-args)

Contoh

Mari kita ambil contoh data karyawan dalam file, dalam HDFS. Data karyawan tersedia diemp_datafile di direktori 'emp /' di HDFS. Ituemp_data adalah sebagai berikut.

1201, gopal,     manager, 50000, TP
1202, manisha,   preader, 50000, TP
1203, kalil,     php dev, 30000, AC
1204, prasanth,  php dev, 30000, AC
1205, kranthi,   admin,   20000, TP
1206, satish p,  grp des, 20000, GR

Tabel yang akan diekspor harus dibuat secara manual dan ada di database tempat tabel akan diekspor.

Kueri berikut digunakan untuk membuat tabel 'karyawan' di baris perintah mysql.

$ mysql
mysql> USE db;
mysql> CREATE TABLE employee ( 
   id INT NOT NULL PRIMARY KEY, 
   name VARCHAR(20), 
   deg VARCHAR(20),
   salary INT,
   dept VARCHAR(10));

Perintah berikut digunakan untuk mengekspor data tabel (dalam format emp_data file di HDFS) ke tabel karyawan di database db dari server database Mysql.

$ sqoop export \
--connect jdbc:mysql://localhost/db \
--username root \
--table employee \ 
--export-dir /emp/emp_data

Perintah berikut digunakan untuk memverifikasi tabel di baris perintah mysql.

mysql>select * from employee;

Jika data yang diberikan berhasil disimpan, maka Anda dapat menemukan tabel berikut dari data karyawan yang diberikan.

+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | kalil        | php dev     | 30000             | AC     |
| 1204 | prasanth     | php dev     | 30000             | AC     |
| 1205 | kranthi      | admin       | 20000             | TP     |
| 1206 | satish p     | grp des     | 20000             | GR     |
+------+--------------+-------------+-------------------+--------+

Bab ini menjelaskan cara membuat dan memelihara pekerjaan Sqoop. Pekerjaan Sqoop membuat dan menyimpan perintah impor dan ekspor. Ini menentukan parameter untuk mengidentifikasi dan mengingat pekerjaan yang disimpan. Panggilan ulang atau eksekusi ulang ini digunakan dalam impor tambahan, yang dapat mengimpor baris yang diperbarui dari tabel RDBMS ke HDFS.

Sintaksis

Berikut ini adalah sintaks untuk membuat pekerjaan Sqoop.

$ sqoop job (generic-args) (job-args)
   [-- [subtool-name] (subtool-args)]

$ sqoop-job (generic-args) (job-args)
   [-- [subtool-name] (subtool-args)]

Buat Pekerjaan (--create)

Di sini kami membuat pekerjaan dengan nama myjob, yang dapat mengimpor data tabel dari tabel RDBMS ke HDFS. Perintah berikut digunakan untuk membuat pekerjaan yang mengimpor data dariemployee tabel di db database ke file HDFS.

$ sqoop job --create myjob \
-- import \
--connect jdbc:mysql://localhost/db \
--username root \
--table employee --m 1

Verifikasi Pekerjaan (--list)

‘--list’argumen digunakan untuk memverifikasi pekerjaan yang disimpan. Perintah berikut digunakan untuk memverifikasi daftar pekerjaan Sqoop yang disimpan.

$ sqoop job --list

Ini menunjukkan daftar pekerjaan yang disimpan.

Available jobs: 
   myjob

Periksa Pekerjaan (--show)

‘--show’argumen digunakan untuk memeriksa atau memverifikasi pekerjaan tertentu dan detailnya. Perintah berikut dan contoh keluaran digunakan untuk memverifikasi pekerjaan yang dipanggilmyjob.

$ sqoop job --show myjob

Ini menunjukkan alat dan opsinya, yang digunakan dalam myjob.

Job: myjob 
 Tool: import Options:
 ---------------------------- 
 direct.import = true
 codegen.input.delimiters.record = 0
 hdfs.append.dir = false 
 db.table = employee
 ...
 incremental.last.value = 1206
 ...

Jalankan Pekerjaan (--exec)

‘--exec’opsi digunakan untuk menjalankan pekerjaan yang disimpan. Perintah berikut digunakan untuk menjalankan pekerjaan tersimpan yang dipanggilmyjob.

$ sqoop job --exec myjob

Ini menunjukkan kepada Anda output berikut.

10/08/19 13:08:45 INFO tool.CodeGenTool: Beginning code generation 
...

Bab ini menjelaskan pentingnya alat 'codegen'. Dari sudut pandang aplikasi berorientasi objek, setiap tabel database memiliki satu kelas DAO yang berisi metode 'getter' dan 'setter' untuk menginisialisasi objek. Alat ini (-codegen) menghasilkan kelas DAO secara otomatis.

Ini menghasilkan kelas DAO di Jawa, berdasarkan struktur Skema Tabel. Definisi Java dibuat sebagai bagian dari proses impor. Penggunaan utama alat ini adalah untuk memeriksa apakah Java kehilangan kode Java. Jika demikian, ini akan membuat versi baru Java dengan pembatas default antar kolom.

Sintaksis

Berikut ini adalah sintaks untuk perintah codegen Sqoop.

$ sqoop codegen (generic-args) (codegen-args) 
$ sqoop-codegen (generic-args) (codegen-args)

Contoh

Mari kita ambil contoh yang menghasilkan kode Java untuk emp tabel di userdb database.

Perintah berikut digunakan untuk menjalankan contoh yang diberikan.

$ sqoop codegen \
--connect jdbc:mysql://localhost/userdb \
--username root \ 
--table emp

Jika perintah berhasil dijalankan, maka itu akan menghasilkan keluaran berikut di terminal.

14/12/23 02:34:40 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
14/12/23 02:34:41 INFO tool.CodeGenTool: Beginning code generation
……………….
14/12/23 02:34:42 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/local/hadoop
Note: /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.java uses or 
   overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

14/12/23 02:34:47 INFO orm.CompilationManager: Writing jar file: 
   /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.jar

Verifikasi

Mari kita lihat hasilnya. Jalur, yang dicetak tebal, adalah lokasi kode Java dariemptabel menghasilkan dan menyimpan. Mari kita verifikasi file di lokasi itu menggunakan perintah berikut.

$ cd /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/
$ ls
emp.class
emp.jar
emp.java

Jika Anda ingin memverifikasi secara mendalam, bandingkan emp tabel di userdb database dan emp.java di direktori berikut

/ tmp / sqoop-hadoop / kompilasi / 9a300a1f94899df4a9b10f9935ed9f91 /.

Bab ini menjelaskan cara menggunakan alat Sqoop 'eval'. Ini memungkinkan pengguna untuk menjalankan kueri yang ditentukan pengguna terhadap server basis data masing-masing dan melihat hasilnya di konsol. Jadi, pengguna dapat mengharapkan data tabel yang dihasilkan untuk diimpor. Dengan menggunakan eval, kita dapat mengevaluasi semua jenis kueri SQL yang dapat berupa pernyataan DDL atau DML.

Sintaksis

Sintaks berikut digunakan untuk perintah Sqoop eval.

$ sqoop eval (generic-args) (eval-args) 
$ sqoop-eval (generic-args) (eval-args)

Pilih Evaluasi Kueri

Menggunakan alat eval, kita dapat mengevaluasi semua jenis kueri SQL. Mari kita ambil contoh memilih baris terbatas diemployee tabel dbdatabase. Perintah berikut digunakan untuk mengevaluasi contoh yang diberikan menggunakan kueri SQL.

$ sqoop eval \
--connect jdbc:mysql://localhost/db \
--username root \ 
--query “SELECT * FROM employee LIMIT 3”

Jika perintah berhasil dijalankan, maka itu akan menghasilkan keluaran berikut di terminal.

+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | khalil       | php dev     | 30000             | AC     |
+------+--------------+-------------+-------------------+--------+

Sisipkan Evaluasi Kueri

Alat eval Sqoop dapat diterapkan untuk pemodelan dan mendefinisikan pernyataan SQL. Itu berarti, kita juga bisa menggunakan eval untuk pernyataan insert. Perintah berikut digunakan untuk menyisipkan baris baru diemployee tabel db database.

$ sqoop eval \
--connect jdbc:mysql://localhost/db \
--username root \ 
-e “INSERT INTO employee VALUES(1207,‘Raju’,‘UI dev’,15000,‘TP’)”

Jika perintah berhasil dijalankan, maka itu akan menampilkan status baris yang diperbarui di konsol.

Atau, Anda dapat memverifikasi tabel karyawan di konsol MySQL. Perintah berikut digunakan untuk memverifikasi barisemployee tabel db database menggunakan pilih 'query.

mysql>
mysql> use db;
mysql> SELECT * FROM employee;
+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | khalil       | php dev     | 30000             | AC     |
| 1204 | prasanth     | php dev     | 30000             | AC     |
| 1205 | kranthi      | admin       | 20000             | TP     |
| 1206 | satish p     | grp des     | 20000             | GR     |
| 1207 | Raju         | UI dev      | 15000             | TP     |
+------+--------------+-------------+-------------------+--------+

Bab ini menjelaskan cara membuat daftar database menggunakan Sqoop. Sqoop list-database tool mem-parsing dan mengeksekusi query 'SHOW DATABASES' terhadap server database. Setelah itu, daftar database yang ada di server.

Sintaksis

Sintaks berikut digunakan untuk perintah Sqoop list-database.

$ sqoop list-databases (generic-args) (list-databases-args) 
$ sqoop-list-databases (generic-args) (list-databases-args)

Contoh Query

Perintah berikut digunakan untuk membuat daftar semua database di server database MySQL.

$ sqoop list-databases \
--connect jdbc:mysql://localhost/ \
--username root

Jika perintah berhasil dijalankan, maka akan muncul daftar database di server database MySQL Anda sebagai berikut.

...
13/05/31 16:45:58 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

mysql
test
userdb
db

Bab ini menjelaskan cara membuat daftar tabel dari database tertentu di server database MySQL menggunakan Sqoop. Alat tabel-tabel Sqoop mem-parsing dan menjalankan kueri 'SHOW TABLES' terhadap database tertentu. Setelah itu, daftar tabel yang ada dalam database.

Sintaksis

Sintaks berikut digunakan untuk perintah tabel daftar Sqoop.

$ sqoop list-tables (generic-args) (list-tables-args) 
$ sqoop-list-tables (generic-args) (list-tables-args)

Contoh Query

Perintah berikut digunakan untuk membuat daftar semua tabel di file userdb database server database MySQL.

$ sqoop list-tables \
--connect jdbc:mysql://localhost/userdb \
--username root

Jika perintah berhasil dijalankan, maka akan muncul daftar tabel di file userdb database sebagai berikut.

...
13/05/31 16:45:58 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

emp
emp_add
emp_contact

Bab ini menjelaskan cara membuat daftar tabel dari database tertentu di server database MySQL menggunakan Sqoop. Alat tabel-tabel Sqoop mem-parsing dan menjalankan kueri 'SHOW TABLES' terhadap database tertentu. Setelah itu, daftar tabel yang ada dalam database.

Sintaksis

Sintaks berikut digunakan untuk perintah tabel daftar Sqoop.

$ sqoop list-tables (generic-args) (list-tables-args) 
$ sqoop-list-tables (generic-args) (list-tables-args)

Contoh Query

Perintah berikut digunakan untuk membuat daftar semua tabel di file userdb database server database MySQL.

$ sqoop list-tables \
--connect jdbc:mysql://localhost/userdb \
--username root

Jika perintah berhasil dijalankan, maka akan muncul daftar tabel di file userdb database sebagai berikut.

...
13/05/31 16:45:58 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

emp
emp_add
emp_contact