1. 程式人生 > 其它 >Mac新手技巧,如何使用 Safari 瀏覽器?

Mac新手技巧,如何使用 Safari 瀏覽器?

SQOOP安裝及使用

目錄

SQOOP安裝

1、上傳並解壓

tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/soft/

2、修改資料夾名字

mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7

3、修改配置檔案

# 切換到sqoop配置檔案目錄
cd /usr/local/soft/sqoop-1.4.7/conf
# 複製配置檔案並重命名
cp sqoop-env-template.sh sqoop-env.sh
# vim sqoop-env.sh 編輯配置檔案,並加入以下內容
export HADOOP_COMMON_HOME=/usr/local/soft/hadoop-2.7.6
export HADOOP_MAPRED_HOME=/usr/local/soft/hadoop-2.7.6/share/hadoop/mapreduce
export HBASE_HOME=/usr/local/soft/hbase-1.4.6
export HIVE_HOME=/usr/local/soft/hive-1.2.1
export ZOOCFGDIR=/usr/local/soft/zookeeper-3.4.6/conf
export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6

# 切換到bin目錄
cd /usr/local/soft/sqoop-1.4.7/bin
# vim configure-sqoop 修改配置檔案,註釋掉沒用的內容(就是為了去掉警告資訊)

4、修改環境變數

vim /etc/profile
# 將sqoop的目錄加入環境變數

5、新增MySQL連線驅動

# 從HIVE中複製MySQL連線驅動到$SQOOP_HOME/lib
cp /usr/local/soft/hive-1.2.1/lib/mysql-connector-java-5.1.49.jar /usr/local/soft/sqoop-1.4.7/lib/

6、測試

# 列印sqoop版本
sqoop version
# 測試MySQL連通性
sqoop list-databases -connect jdbc:mysql://master:3306?useSSL=false -username root -password 123456

準備MySQL資料

登入MySQL資料庫

mysql -u root -p123456;

建立student資料庫

create database student;

切換資料庫並匯入資料

# mysql shell中執行
use student;
source /root/student.sql;
source /root/score.sql;

另外一種匯入資料的方式

# linux shell中執行
mysql -u root -p123456 student</root/student.sql
mysql -u root -p123456 student</root/score.sql

使用Navicat執行SQL檔案

也可以通過Navicat匯入

匯出MySQL資料庫

mysqldump -u root -p123456 資料庫名>任意一個檔名.sql

import

從傳統的關係型資料庫匯入HDFS、HIVE、HBASE......

MySQLToHDFS

編寫指令碼,儲存為MySQLToHDFS.conf
import
--connect
jdbc:mysql://master:3306/student?useSSL=false
--username
root
--password
123456
--table
student
--m
2
--split-by
age
--target-dir
/sqoop/data/student1
--fields-terminated-by
','
執行指令碼
sqoop --options-file MySQLToHDFS.conf
注意事項:

1、--m 表示指定生成多少個Map任務,不是越多越好,因為MySQL Server的承載能力有限

2、當指定的Map任務數>1,那麼需要結合--split-by引數,指定分割鍵,以確定每個map任務到底讀取哪一部分資料,最好指定數值型的列,最好指定主鍵(或者分佈均勻的列=>避免每個map任務處理的資料量差別過大)

3、如果指定的分割鍵資料分佈不均,可能導致資料傾斜問題

4、分割的鍵最好指定數值型的,而且欄位的型別為int、bigint這樣的數值型

5、編寫指令碼的時候,注意:例如:--username引數,引數值不能和引數名同一行

--username root  // 錯誤的

// 應該分成兩行
--username
root

6、執行的時候會報錯InterruptedException,hadoop2.7.6自帶的問題,忽略即可

21/01/25 14:32:32 WARN hdfs.DFSClient: Caught exception 
java.lang.InterruptedException
	at java.lang.Object.wait(Native Method)
	at java.lang.Thread.join(Thread.java:1252)
	at java.lang.Thread.join(Thread.java:1326)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.closeResponder(DFSOutputStream.java:716)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.endBlock(DFSOutputStream.java:476)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:652)

7、實際上sqoop在讀取mysql資料的時候,用的是JDBC的方式,所以當資料量大的時候,效率不是很

8、sqoop底層通過MapReduce完成資料匯入匯出,只需要Map任務,不需要Reduce任務

9、每個Map任務會生成一個檔案

MySQLToHive

先會將MySQL的資料匯出來並在HDFS上找個目錄臨時存放,預設為:/user/使用者名稱/表名

然後再將資料載入到Hive中,載入完成後,會將臨時存放的目錄刪除

編寫指令碼,並儲存為MySQLToHIVE.conf檔案
import 
--connect
jdbc:mysql://master:3306/student?useSSL=false
--username
root
--password
123456
--table
score
--fields-terminated-by
"\t"
--lines-terminated-by 
"\n"
--m
3
--split-by
student_id
--hive-import
--hive-overwrite
--create-hive-table
--hive-database
testsqoop
--hive-table
score
--delete-target-dir
在Hive中建立testsqoop庫
hive> create database testsqoop;
將HADOOP_CLASSPATH加入環境變數中
vim /etc/profile
# 加入如下內容
export HADOOP_CLASSPATH=$HADOOP_HOME/lib:$HIVE_HOME/lib/*

# 重新載入環境變數
source /etc/profile
將hive-site.xml放入SQOOP_HOME/conf/
cp /usr/local/soft/hive-1.2.1/conf/hive-site.xml /usr/local/soft/sqoop-1.4.7/conf/
執行指令碼
sqoop --options-file MySQLToHIVE.conf
--direct

加上這個引數,可以在匯出MySQL資料的時候,使用MySQL提供的匯出工具mysqldump,加快匯出速度,提高效率

需要將master上的/usr/bin/mysqldump分發至 node1、node2的/usr/bin目錄下

scp /usr/bin/mysqldump node1:/usr/bin/
scp /usr/bin/mysqldump node2:/usr/bin/
-e引數的使用
import 
--connect 
jdbc:mysql://master:3306/student 
--username 
root 
--password 
123456 
--fields-terminated-by 
"\t" 
--lines-terminated-by 
"\n" 
--m 
2 
--split-by 
student_id 
--e 
"select * from score where student_id=1500100011 and $CONDITIONS" 
--target-dir 
/testQ 
--hive-import 
--hive-overwrite 
--create-hive-table 
--hive-database 
testsqoop 
--hive-table 
score2

MySQLToHBase

編寫指令碼,並儲存為MySQLToHBase.conf
import 
--connect 
jdbc:mysql://master:3306/student?useSSL=false
--username 
root 
--password 
123456
--table 
student
--hbase-table 
student
--hbase-create-table
--hbase-row-key 
id 
--m 
1
--column-family 
cf1
在HBase中建立student表
create 'student','cf1'
執行指令碼
sqoop --options-file MySQLToHBase.conf

export

HDFSToMySQL

編寫指令碼,並儲存為HDFSToMySQL.conf
export
--connect
jdbc:mysql://master:3306/student?useSSL=false
--username
root
--password
123456
--table
student
-m
1
--columns
id,name,age,gender,clazz
--export-dir
/sqoop/data/student1/
--fields-terminated-by 
','
先清空MySQL student表中的資料,不然會造成主鍵衝突
執行指令碼
sqoop --options-file HDFSToMySQL.conf

檢視sqoop help

sqoop help

21/04/26 15:50:36 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
usage: sqoop COMMAND [ARGS]

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.
# 檢視import的詳細幫助
sqoop import --help