亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下如何安裝并使用sqoop

發布時間:2022-02-17 12:28:37 來源:億速云 閱讀:206 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Linux下如何安裝并使用sqoop”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux下如何安裝并使用sqoop”這篇文章吧。

sqoop它是一款開源的工具,主要用于在Hadoop(Hive)與傳統的數據庫(mysql、postgresql…)間進行數據的傳遞,可以將一個關系型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。

Linux下如何安裝并使用sqoop

sqoop-1.4.7安裝配置流程

(1) Sqoop環境前提:

  • Hadoop
  • 關系型數據庫(MySQL/Oracle)
  • HBase
  • Hive
  • ZooKeeper

(2) 解壓sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz安裝包到目標目錄下:

  • tar -zxvf .tar.gz -C 目標目錄

(3) 為后續方便,重命名Sqoop文件夾:

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

(4) 修改配置文件:

  • 進入sqoop-1.4.7/conf路徑,重命名配置文件:

    • mv sqoop-env-template.sh sqoop-env.sh
  • 修改sqoop-env.sh信息:(若配置了環境變量,可通過

    echo $XXXXX_HOME

    查詢安裝位置)

    • vi sqoop-env.sh

    • #Set path to where bin/hadoop is availableexport HADOOP_COMMON_HOME=Hadoop安裝路徑#Set path to where hadoop-*-core.jar is available#export HADOOP_MAPRED_HOME=Hadoop安裝路徑#set the path to where bin/hbase is available#export HBASE_HOME=HBase安裝路徑#Set the path to where bin/hive is available#export HIVE_HOME=Hive安裝路徑#Set the path for where zookeper config dir is#export ZOOCFGDIR=ZooKeeper 配置文件夾 路徑復制代碼

(5) 關聯Hive:

  • cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/

(5) 配置環境變量:

  • 修改配置文件:

    • vi /etc/profile
  • 增加以下內容:

    • export SQOOP_HOME=sqoop安裝路徑
    • export PATH=$PATH:$SQOOP_HOME/bin
  • 聲明環境變量:

    • source /etc/profile

(6) 啟動查看版本號

  • sqoop version

(7) 添加驅動:

  • 導入MySQL驅動到sqoop/lib下
  • 導入Oracle驅動到sqoop/lib下

3. Sqoop操作

(1) 常用參數:

  • 參數查看:Sqoop官網 -> documentation -> Sqoop User Guide

  • import 導入數據到集群

  • export 從集群導出數據

  • create-hive-table 創建hive表

  • import-all-tables 指定關系型數據庫所有表到集群

  • list-databases 列出所有數據庫

  • list-tables 列出所有數據庫表

  • merge 合并數據

  • codegen 獲取某張表數據生成JavaBean并打Jar包

(2) import——Sqoop的導入操作:

  • 功能:MySQL/Oracle –> HDFS/Hive

  • 修改MySQL訪問權限:

    • update user set host='%' where host='localhost';
    • delete from user where Host='127.0.0.1';
    • delete from user where Host='bigdata01';
    • delete from user where Host='::1';
    • flush privileges;
    • use mysql;
    • select User, Host, Password from user;
    • 查看權限:
    • 修改權限為所有用戶都可訪問:
  • 操作命令:

    • 準備工作:
    • 導入命令:
    • 開啟hive服務
    • 在hive中創建好要導入的對應表
    • FAILED: SemanticException [Error 10072]: Database does not exist: XXXXXXXX
    • 報錯原因:Sqoop沒有關聯Hive
    • 解決方法:
    • cp /XXX/hive/conf/hive-site.xml /XXX/sqoop-1.4.7/conf/
    • ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://bigdata01:9000/XXXXXXXXXX already exists
    • 報錯原因:hdfs中存在同名路徑
    • 解決方法:
    • 指定新路徑或者刪除hdfs中原文件
    • ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
    • 報錯原因:hive環境變量配置缺失
    • 解決方法:——Hadoop環境加入Hive依賴
    • source /etc/profile
    • export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
    • vi /etc/profile
    • 修改配置文件:
    • 增加以下內容:
    • 聲明環境變量:
    • sqoop import --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password 密碼 --table 表名 --num-mappers 1 --hive-import --fields-terminated-by "\t" --hive-overwrite --hive-table hive數據庫名.表名
    • 在Hive中可以看到指定表中已傳入數據信息
    • 可能報錯1:
    • 可能報錯2:
    • 可能報錯3:
    • 導出命令:
    • Linux本地查看hdfs上傳結果:
    • 使用query對數據進行過濾:
    • 直接過濾字段:
    • sqoop import --connect jdbc:mysql://bigdata01:3306/數據庫名 # 連接MySQL --username root # 用戶名 --password XXXXXX # 密碼 --table 表名 # 上傳至HDFS的表 --target-dir /YYYYYYY # HDFS目標文件夾 --num-mappers 1 # 指定map運行 --fields-terminated-by "\t" # 指定分隔符
    • hdfs dfs -cat /XXXXXXX/part-m-00000
    • sqoop import --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --fields-terminated-by "\t" --query 'select * from 表名 where 條件 and $CONDITIONS' # $CONDITIONS 對mapper進行索引
    • sqoop import --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password XXXXXX --table 表名 --target-dir /YYYYYYY --num-mappers 1 --columns 字段名
    • 本地mysql表上傳至hdfs:
    • 本地mysql表上傳至hive:

(3) emport——Sqoop的導出操作:

  • 功能:HDFS/Hive –> MySQL/Oracle

  • 操作命令:

    • 導出命令:
    • sqoop emport --connect jdbc:mysql://bigdata01:3306/數據庫名 # 連接MySQL --username root # 用戶名 --password XXXXXX # 密碼 --table 表名 # 目標mysql表 --export-dir /user/hive/warehouse/YYYYYYY # hive文件夾 --num-mappers 1 # 指定map運行 --input-fields-terminated-by "\t" # 指定分隔符
    • hive表導出至本地mysql:

(4) 列出所有數據庫:

  • 操作命令:

    • sqoop list-databases --connect jdbc:mysql://bigdata01:3306/ --username root --password 密碼

(5) 獲取數據庫表數據生成JavaBean:

  • 操作命令:

    • sqoop codegen --connect jdbc:mysql://bigdata01:3306/數據庫名 --username root --password 密碼 --table 表名 -- bindir Linux本地路徑 # 指定Jar包打包路徑 --class-name 類名 # 指定Java類名 --fields-terminated-by "\t"

(6) 合并hdfs中不同目錄下的數據:

  • 操作命令:

    • sqoop merge --new-data hdfs新表路徑 --onto hdfs舊表路徑 --target-dir /YYYYYYY # 合并后的hdfs路徑 --jar-file = # Linux本地Jar包路徑 --class-name XXXXX # Jar包的類 --merge-key id # 合并依據
  • **注意:**merge操作是一個新表替代舊表的操作,如果有沖突id的話新表數據替換舊表數據,如果沒有沖突則是新表數據添加到舊表的數據。


以上是“Linux下如何安裝并使用sqoop”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辉县市| 渭源县| 阳谷县| 扶风县| 东丰县| 即墨市| 交口县| 普兰县| 台江县| 商城县| 五大连池市| 芮城县| 清新县| 准格尔旗| 夏河县| 兰西县| 罗平县| 万荣县| 福清市| 渭南市| 台中市| 彩票| 吴桥县| 通化县| 馆陶县| 溧阳市| 民县| 乌拉特前旗| 阜南县| 佛山市| 龙山县| 诸城市| 浠水县| 余姚市| 图木舒克市| 涞水县| 宁远县| 汽车| 宁阳县| 隆子县| 锦州市|