hadoop3.3 安裝配置sqoop1.4.7

来源:https://www.cnblogs.com/Live-up-to-your-youth/archive/2023/04/01/17278233.html
-Advertisement-
Play Games

一:在hadoop3.3中安裝配置sqoop1.4.7 前言: sqoop功能已經非常完善了,沒有什麼可以更新的了,官方停止更新維護了。因此官方集成的hadoop包停留在了2.6.0版本,在hadoop3.3.0版本會提示類版本過低錯誤,但純凈版sqoop有缺少必須的第三方庫,所以將這兩個包下載下來 ...


一:在hadoop3.3中安裝配置sqoop1.4.7

前言:

sqoop功能已經非常完善了,沒有什麼可以更新的了,官方停止更新維護了。因此官方集成的hadoop包停留在了2.6.0版本,在hadoop3.3.0版本會提示類版本過低錯誤,但純凈版sqoop有缺少必須的第三方庫,所以將這兩個包下載下來,提取部分sqoop_hadoop2.6.0版本的jar包放到純凈版sqoop的lib目錄下,在sqoop配置文件中加入獲取當前環境中的hive及hadoop的lib庫來使用.

配置sqoop1.4.7 支持hadoop3.3

1:下載sqoop1.4.7的兩個版本

http://archive.apache.org/dist/sqoop/1.4.7

sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz # 只用到裡面的jar包
sqoop-1.4.7.tar.gz # 上傳到伺服器

2:提取sqoop-1.4.7.bin__hadoop-2.6.0根目錄下的sqoop-1.4.7.jar放到sqoop-1.4.7根目錄,正常純凈版sqoop是沒有這個jar包的

3:提取lib目錄下的這三個必須的jar包放到sqoop-1.4.7/lib/目錄下,正常純凈版sqoop的lib目錄下是沒有文件的。

 

 

 4:提取出sqoop-1.4.6.jar放在hadoop的lib下

添加sqoop配置信息,引用hadoop,hive的lib庫

sqoop-1.4.7/conf 目錄下的sqoop-env.sh文件追加如下信息

export HADOOP_COMMON_HOME=/export/server/hadoop-3.3.0
export HADOOP_MAPRED_HOME=/export/server/hadoop-3.3.0
export HIVE_HOME=/export/server/apache-hive-3.1.2-bin
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*

添加sqoop環境變數

在/etc/profile 中添加

export SQOOP_HOME=/export/server/sqoop/
export PATH=$PATH:$SQOOP_HOME/bin:$SQOOP_HOME/bin

二:sqoop 常見的使用方式

sqoop的數據導入操作

1:sqoop help  查看幫助文檔命令

2:查看資料庫中的所有表

sqoop list-tables \
--connect jdbc:mysql://192.168.52.150:3306/hue \
--username root \
--password 123456 

3:如何將MySQL中的數據全量的導入到HDFS中(全量)

命令1:
sqoop import \
--connect jdbc:mysql://192.168.50.150:3306/test \
--username root \
--password root \
--table emp

說明:
    預設情況下, 會將數據導入到操作sqoop用戶的HDFS的家目錄下,在此目錄下會創建一個以導入表的表名為名稱文件夾, 在此文件夾下莫每一條數據會運行一個mapTask, 數據的預設分隔符號為 逗號
    
思考: 是否更改其預設的位置呢?
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--table emp \
--delete-target-dir \
--target-dir '/sqoop_works/emp_1'

思考: 是否調整map的數量呢?
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--table emp \
--delete-target-dir \
--target-dir '/sqoop_works/emp_2' \
--split-by id \
-m 2 

思考: 是否調整預設分隔符號呢? 比如調整為 \001
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--table emp \
--fields-terminated-by '\001' \
--delete-target-dir \
--target-dir '/sqoop_works/emp_3' \
-m 1 
View Code

4:將MySQL中的數據全量的導入到hive中

以emp_add 表為例

第一步: 在HIVE中創建一個目標表
create database hivesqoop;
use hivesqoop;
create table hivesqoop.emp_add_hive(
    id  int,
    hno string,
    street string,
    city string
) 
row format delimited fields terminated by '\t'
stored as  orc ;

第二步: 通過sqoop完成數據導入操作
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--table emp_add \
--hcatalog-database hivesqoop \
--hcatalog-table emp_add_hive \
-m 1 
View Code

5:如何將MySQL中的數據條件的導入到HDFS中

方式一: 通過 where的方式
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--table emp \
--where 'id > 1205' \
--delete-target-dir \
--target-dir '/sqoop_works/emp_2' \
--split-by id \
-m 2 

方式二: 通過SQL的方式
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--query 'select deg  from emp where 1=1 AND \$CONDITIONS' \
--delete-target-dir \
--target-dir '/sqoop_works/emp_4' \
--split-by id \
-m 1 

註意: 
    如果SQL語句使用 雙引號包裹,  $CONDITIONS前面需要將一個\進行轉義, 單引號是不需要的
View Code

6:如何通過條件的方式導入到hive中 (後續模擬增量導入數據)

sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--table emp_add \
--where 'id > 1205' \
--hcatalog-database hivesqoop \
--hcatalog-table emp_add_hive \
-m 1 

或者:
sqoop import \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--query 'select * from emp_add where id>1205 and $CONDITIONS'
--hcatalog-database hivesqoop \
--hcatalog-table emp_add_hive \
-m 1 
View Code

sqoop的數據導出操作

需求: 將hive中 emp_add_hive 表數據導出到MySQL中

# 第一步: 在mysql中創建目標表 (必須創建)
create table test.emp_add_mysql(
    id     INT  ,
    hno    VARCHAR(32) NULL,
    street VARCHAR(32) NULL,
    city   VARCHAR(32) NULL
);

# 第二步: 執行sqoop命令導出數據
sqoop export \
--connect jdbc:mysql://192.168.52.150:3306/test \
--username root \
--password 123456 \
--table emp_add_mysql \
--hcatalog-database hivesqoop \
--hcatalog-table emp_add_hive \
-m 1 

sqoop相關常用參數

參數說明
--connect 連接關係型資料庫的URL
--username 連接資料庫的用戶名
--password 連接資料庫的密碼
--driver JDBC的driver class
--query或--e <statement> 將查詢結果的數據導入,使用時必須伴隨參--target-dir,--hcatalog-table,如果查詢中有where條件,則條件後必須加上關鍵字。如果使用雙引號包含,則CONDITIONS前要加上\以完成轉義:$CONDITIONS
--hcatalog-database 指定HCatalog表的資料庫名稱。如果未指定,default則使用預設資料庫名稱。提供 --hcatalog-database不帶選項--hcatalog-table是錯誤的。
--hcatalog-table 此選項的參數值為HCatalog表名。該--hcatalog-table選項的存在表示導入或導出作業是使用HCatalog表完成的,並且是HCatalog作業的必需選項。
--create-hcatalog-table 此選項指定在導入數據時是否應自動創建HCatalog表。表名將與轉換為小寫的資料庫表名相同。
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \ 建表時追加存儲格式到建表語句中,tblproperties修改表的屬性,這裡設置orc的壓縮格式為SNAPPY
-m 指定並行處理的MapReduce任務數量。 -m不為1時,需要用split-by指定分片欄位進行並行導入,儘量指定int型。
--split-by id 如果指定-split by, 必須使用$CONDITIONS關鍵字, 雙引號的查詢語句還要加\
--hcatalog-partition-keys --hcatalog-partition-values keys和values必須同時存在,相當於指定靜態分區。允許將多個鍵和值提供為靜態分區鍵。多個選項值之間用,(逗號)分隔。比如: --hcatalog-partition-keys year,month,day --hcatalog-partition-values 1999,12,31
--null-string '\N' --null-non-string '\N' 指定mysql數據為空值時用什麼符號存儲,null-string針對string類型的NULL值處理,--null-non-string針對非string類型的NULL值處理
--hive-drop-import-delims 設置無視字元串中的分割符(hcatalog預設開啟)
--fields-terminated-by '\t'  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、常規操作 1、創建文件夾 mkdir 文件夾名稱 2、創建文件或編輯文件 在目標文件夾中執行 vi 文件名.尾碼 # i (進入可編輯模式) # ESC (按Esc按鍵,退出編輯模式) # :q (未作任何編輯,直接退出) # :q! (強制退出) # :wq (保存退出) 3、文件夾或文件賦權 ...
  • 前言 最近電腦重新安裝nmap,但是圖形化界面無法運行,如圖所示: 是因為用戶名稱中存在中文字元。 接下來就親自實操一下如何將Windows操作系統用戶名的中文名稱修改為英文名稱。 一、控制面板修改電腦名 (1):桌面左下角搜索框搜索控制面板(2):打開控制面板,點擊用戶帳戶下的更改賬戶類型 (3) ...
  • 今天鹹魚給大家分享個源碼編譯安裝 Nginx 的 shell 腳本 這個 shell 腳本可重覆執行 完整源碼放在最後 定義一個變數來存放 nginx 版本號 version=1.15.4 nginx 下載地址:http://nginx.org/download/ 下列函數功能則是判斷當前步驟是否執 ...
  • 一、為什麼要線程同步 在Linux 多線程編程中,線程同步是一個非常重要的問題。如果線程之間沒有正確地同步,就會導致程式出現一些意外的問題,例如: 競態條件(Race Condition):多個線程同時修改同一個共用變數,可能會導致不可預測的結果,因為線程的執行順序是不確定的。 死鎖(Deadloc ...
  • 這篇主要介紹對於SOP8,SOP10,SOP16封裝的PY32F002A/PY32F003, 沒有BOOT0的情況如何修改Option Bytes, 以及如何在物理管腳上使用不同的PIN ...
  • 訪問命令行(command line interface,CLI) Linux控制台 1)Linux系統啟動時,會自動創建多個虛擬控制台。虛擬控制台是運行在Linux系統記憶體中的終端會話。多數Linux發行版會啟動5~6個 2)通常必須按下Ctrl+Alt組合鍵,然後再按一個功能鍵(F1~F7)來進 ...
  • 資料庫安全與保護 第一節 資料庫完整性 資料庫完整性是指資料庫中數據的正確性和相容性。 數據完整性約束是為了防止資料庫中存在不符合語義的數據,為了維護數據的完整性,DBMS 必須提供一種機制來檢查資料庫中的數據,以判斷其是否滿足語義規定的條件。 這些加在資料庫數據之上的語義約束條件就是數據完整性約束 ...
  • 包含五個內容:①Navicat連接伺服器MySQL;②如何查看MySQL用戶名和密碼;③修改MySQL登錄密碼;④error 1045 (28000): access denied for user 'root'@'localhost' (using password:yes)錯誤解決方法;⑤安裝M... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...