Sqoop(二) Sqoop匯入 匯出資料

2021-10-03 18:36:50 字數 4177 閱讀 7871

1.2 rdbms -> hive

1.3 rdbms -> hbase

2. 匯出資料

在sqoop中,「匯入」概念指:從非大資料集群(rdbms)向大資料集群(hdfs,hive,hbase)中傳輸資料,叫做:匯入,即使用import關鍵字。

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--table test_table \

--target-dir /during/sqoop_test \

--delete-target-dir \

--fields-terminated-by "\t"

# delete-target-dir目錄存在,刪除後匯入

# 檢視

hdfs dfs -cat /during/sqoop_test/*

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--target-dir /during/sqoop_test \

--delete-target-dir \

--fields-terminated-by "\t" \

--query 'select name from test_table where id <2 and $conditions;'

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--target-dir /during/sqoop_test \

--delete-target-dir \

--fields-terminated-by "\t" \

--columns id,update_time \

--table test_table

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--target-dir /during/sqoop_test \

--delete-target-dir \

--fields-terminated-by "\t" \

--table test_table \

--where "id=2"

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--table test_table \

--hive-import \

--fields-terminated-by "\t" \

--hive-overwrite \

--hive-table during.sqoop_hive

注:

1、sqoop_hive表如果沒有的話,會自動建立。

2、從mysql到hdfs的預設路徑為/user/root/,如這裡為/user/root/test_table。當匯入完成後,該目錄會刪除。

3、該過程分為兩步,第一步將資料匯入到hdfs,第二步將匯入到hdfs的資料遷移到hive倉庫。從mysql到hive,本質時從mysql => hdfs => load to hive

報錯:

error hive.hiveconfig: could not load org.apache.hadoop.hive.conf.hiveconf. make sure hive_conf_dir is set correctly.

解決:

# vim /etc/profile

export hadoop_classpath=

$hadoop_classpath

:$hive_home/lib/*

# source /etc/profile

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--table stu_hive \

--fields-terminated-by "\t" \

--check-column id \

--last-value 1010

# 先在mysql中建表並插入幾條資料:

mysql> create table staff_timestamp(id int(4), name varchar(255), *** varchar(255), last_modified timestamp default current_timestamp on update current_timestamp)

;mysql> insert into staff_timestamp (id, name, ***) values(1, 'aaa', 'female');

mysql> insert into staff_timestamp (id, name, ***) values(2, 'bbb', 'female');

# 先導入一部分資料:

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--table staff_timestamp \

--delete-target-dir \

--hive-import \

--fields-terminated-by "\t" \

--m 1

# 再增量匯入一部分資料:

mysql> insert into staff_timestamp (id, name, ***) values(3, 'ccc', 'female');

sqoop import \

--connect jdbc:mysql://topnpl200:3306/topdb_dev \

--username root \

--password toptop****** \

--table staff_timestamp \

--check-column last_modified \

--incremental lastmodified \

--m 1 \

--last-value "2019-09-15 16:26:05" \

詳見 hbase(六)—— hbase整合sqoop

在sqoop中,「匯出」概念指:從大資料集群(hdfs,hive,hbase)向非大資料集群(rdbms)中傳輸資料,叫做:匯出,即使用export關鍵字。

匯出到mysql時,如果mysql表不存在,不會自動建立。

sqoop export \

--connect jdbc:mysql://topnpl200:3306/topdb_dev?characterencoding=utf-8 \

--username root \

--password toptop****** \

--export-dir /user/hive/warehouse/during.db/stu \

--table stu_hive \

--input-fields-terminated-by "\t"

sqoop匯入匯出

sqoop官方手冊位址 最近在看sqoop有些感想,就寫下來。sqoop是大資料裡面匯入匯出的乙個工具。關於import匯出 可以從mysql匯出到hdfs,hbase,hive,案例如下,這是乙個匯出到hdfs的案例 import connect jdbc mysql username root ...

sqoop匯入 匯出

全部匯入 sqoop import connect jdbc mysql hadoop01 3306 test1 username root password 1234 table students target dir user test1 delete target dir fields ter...

Sqoop知識點(二) Sqoop匯入匯出

其中所說的匯入匯出,其實不僅僅是hdfs,指的是hadoop生態圈,可以從mysql匯入到hive hbase等框架中,自己之前理解的太過狹窄 sqoop help sqoop command args sqoop的使用 使用sqoop help 就可以看見command中都有哪些 使用sqoop ...