sqoop匯出parquet格式的hive表

2021-10-14 12:08:21 字數 1903 閱讀 2392

結論1:sqoop匯出parquet格式的表,必須指定hive的資料庫與表名

遇到的問題1:

error sqoop.sqoop: got exception running sqoop: org.kitesdk.data.datasetnotfoundexception: descriptor location does not exist: hdfs://***/.metadata
原因:採用了傳統的匯出資料的方式

sqoop export \

--connect jdbc:mysql://hostname:3306/schema \

--driver com.mysql.jdbcdriver \

--username ***x \

--password *** \

--table *** \

--input-fields-terminated-by ',' \

--input-null-string '\\n' \

--input-null-non-string '\\n' \

-m 1;

解決方法: 指定匯出的hive資料庫名稱與表名,去掉hdfs路徑

sqoop export \

--connect jdbc:mysql://hostname:3306/schema \

--driver com.mysql.jdbcdriver \

--username ***x \

--password *** \

--table *** \

--input-fields-terminated-by ',' \

--input-null-string '\\n' \

--input-null-non-string '\\n' \

--hcatalog-database itfdb \

--hcatalog-table test2 \

-m 1;

結論2:rdbms中的列必須要能在hive中查到

遇到的問題:

我在rdbms中建的表字段為 id,name,***

但在hive中建的表的字段為 name,age,***

原因:rdbms中的id列在hive中並未找到

解決方法:將hive中的列名與rdbms中的列名保持一致

將hive中建表字段改為 id,name,***
結論3: 資料匯出的匹配並不是按照字段順序匹配的,而是按照欄位名匹配的

結論4:hive中的字段可以比rdbms中的字段多,但是必須包含rdbms中的字段

那麼問題來了,字段順序不一致可以不?答案是可以的

hive中的字段可不可以比rdbms多?答案也是可以的

證明如下:

我在rdbms中建的表的字段順序為:id,name,age

我在hive中建的表的字段順序為:id,age,name,tt

並向hive中匯入了一條資料 (1,2,3,4)

sqoop匯入匯出

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

sqoop匯出指令碼

sqoop匯出指令碼 bin sh source exitcodecheck.sh opts getparam incstart getparam inc start incend getparam inc end pg connection getparam jdbc str pg usernam...

sqoop匯入 匯出

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