<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                下面都使用MySQL為例,在MySQL和hadoop之間進行數據的導入和導出。 所有的sqoop命令都是在Linux Shell中執行。<br/> **你可以輸入`sqoop import --help`獲取sqoop import命令幫助** <hr/> ```sql [root@hadoop101 /]# sqoop import --help Common arguments: --connect <jdbc-uri> Specify JDBC ...... ``` <br/> **基本導入語句** <hr/> ```sql # 使用sqoop-import也可以,它是sqoop import的別名 # \是轉義字符,是為了方便在Linux中換行;它的左邊要留一個空格,右邊不能存在空格 # --connect mysql數據庫地址 # --driver mysql驅動器 # --table mysql中的數據表 # --username mysql的登錄名 # --password mysql的登錄密碼 # --target-dir 要將數據導入到哪個hdfs目錄上。如果目錄不存在則自動創建,已經存在則報錯 # -m 3 Map的數量,指定為3將會在/data/sqoop_db/customers/生成3個part-m-*文件 # 上面指定的參數與順序無關 sqoop import \ --connect jdbc:mysql://hadoop101:3306/sqoop_db \ --driver com.mysql.jdbc.Driver \ --table customers \ --username root \ --password 123456 \ --target-dir /data/sqoop_db/customers \ -m 3 ``` 生成3個part-m-*文件 ![](https://img.kancloud.cn/f9/5f/f95f4a03189639c0e4bc96b06bf14e32_1470x306.png) <br/> **通過where語句過濾導入表** <hr/> ```sql # --where # --delete-target-dir 如果 --target-dir 已經存在則刪除 sqoop import \ --connect jdbc:mysql://hadoop101:3306/sqoop_db \ --driver com.mysql.jdbc.Driver \ --table orders \ --where "order_id<500" \ --username root \ --password 123456 \ --delete-target-dir \ --target-dir /data/sqoop_db/orders \ -m 3 ``` <br/> **通過columns過濾導入表** <hr/> ```sql # --columns 只導入在這里指定的列 sqoop import \ --connect jdbc:mysql://hadoop101:3306/sqoop_db \ --driver com.mysql.jdbc.Driver \ --table orders \ --columns "order_id,order_date,order_customer_id" \ --username root \ --password 123456 \ --delete-target-dir \ --target-dir /data/sqoop_db/orders2 \ -m 3 ``` <br/> **使用query方式導入** <hr/> ```sql # --query 只導入符合這里條件的數據 # 當使用where語句時必須添加 and \$CONDITIONS,防止Linux Shell識別為它的變量 # --split-by 指定用于分割的列,使用--query必須使用--split-by sqoop import \ --connect jdbc:mysql://hadoop101:3306/sqoop_db \ --driver com.mysql.jdbc.Driver \ --query "select * from orders where order_status!='CLOSED' and \$CONDITIONS" \ --split-by order_status \ --username root \ --password 123456 \ --delete-target-dir \ --target-dir /data/sqoop_db/orders3 \ -m 3 ``` <br/> **增量方式導入數據** <hr/> ```sql # --incremental append 增量導入,追加數據至已經存在的hdfs數據集上 # --incremental lastmodified 可追加更新的數據 # --check-column 指定遞增的列 # --last-value 指定上一次導入的最大值 sqoop import \ --connect jdbc:mysql://hadoop101:3306/sqoop_db \ --driver com.mysql.jdbc.Driver \ --table orders \ --username root \ --password 123456 \ --incremental append \ --check-column order_date \ --last-value '2014-04-15' \ --target-dir /data/sqoop_db/orders \ -m 3 ``` 在/data/sqoop_db/orders目錄下原本有3個part-m-*文件。 ![](https://img.kancloud.cn/fd/5e/fd5e21cc0a31e22027fd81562c88195a_1472x318.png) 進行增量導入后,再追加3個文件而且這三個新增的文件數據從2014-04-15年開始,原有的3個文件數據基本不變。 ![](https://img.kancloud.cn/9f/e9/9fe9f11ca492fd426d7333bb95d2beb2_1459x441.png) <br/> **sqoop job命令** <hr/> 相對于sqoop import就是多了一個步驟,sqoop job就是新創建一個job,然后再執行job;而sqoop import是直接執行。 ```sql -- 查看sqoop job有哪些參數 [root@hadoop101 /]# sqoop job --help usage: sqoop job [GENERIC-ARGS] [JOB-ARGS] [-- [<tool-name>] [TOOL-ARGS]] Job management arguments: --create <job-id> 定義一個新的job --delete <job-id> 刪除一個已有的job --exec <job-id> 執行一個已有的job --help Print usage instructions --list 列出所有job --meta-connect <jdbc-uri> Specify JDBC connect string for the metastore --show <job-id> Show the parameters for a saved job --verbose Print more information while working ``` (1)創建一個job: ```sql sqoop job \ --create job_orders -- import \ --connect jdbc:mysql://hadoop101:3306/sqoop_db \ --table orders \ --where "order_id<500" \ --username root \ --password 123456\ --delete-target-dir \ --target-dir /data/sqoop_db/order_job \ --m 3 [root@hadoop101 /]# sqoop job --list Available jobs: job_orders ``` (2)執行job: ```sql [root@hadoop101 /]# sqoop job --exec job_orders --輸入的是你的mysql登錄密碼 Enter password: ``` <br/> **導入時指定文件格式** <hr/> ```sql [root@hadoop101 /]# sqoop import --help Import control arguments: --as-avrodatafile 導入數據為avro文件 --as-parquetfile 導入數據為parquet文件 --as-sequencefile 導入數據為sequence文件 --as-textfile 導入數據為text文件(默認) ``` 導入時指定為parquet文件: ```sql sqoop import \ --connect jdbc:mysql://hadoop101:3306/sqoop_db \ --table orders \ --username root \ --password 123456 \ --delete-target-dir \ --target-dir /data/sqoop_db/orders4 \ -m 3 \ --as-sequencefile ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看