1 Importing Data Directly into Hive 關係型數據庫-----hivemysql
sqoop import \sql
--connect jdbc:mysql://192.168.130.221/sqoop \數據庫
--username root \服務器
--password root \oop
--table tbl_place \spa
--hive-importcode
表要有主鍵啊!!!orm
sqoop和hive的導入默認的導入路徑是不同的!可是不能存在
three
成功~
ci
2
**For example, if you
want to change the Hive type of column id to STRING and column price to DECIMAL,
you can specify the following Sqoop parameters:
sqoop import \
...
--hive-import \
--map-column-hive id=STRING,price=DECIMAL
本身來一個:
sqoop import \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table tbl_place \
--hive-import \
--map-column-hive place_code=STRING
成功!
**導入HIVE的過程:
1 先將數據導入臨時表。
2 導入成功後
3 creating a table
4 loading the data from a temporary location.
**臨時位置能夠用 --target-dir or --warehouse-dir 兩個參數指定。可是不要使用/user/hive/warehouse,容易在第三階段出現問題。
**默認狀況,已存在的表中若是有數據,則追加。
若是想刪除原來的數據,再遷移的話,使用參數:--hive-overwrite
本身來一個:
sqoop import \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table tbl_place \
--hive-overwrite \
成功!
3 Using Partitioned Hive Tables---使用分區的hive表
**
sqoop import \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table tbl_place \
--hive-import \
--hive-partition-key place_code\
--hive-partition-value "2016-02-26"
腦下面的錯誤。我在想是否是從由於個人hive不是一個集羣致使的?----有待解決!
**Sqoop要求分區列爲字符串類型。
**hive的分區支持是實現虛擬列,不屬於數據自己。
**--hive-partition-value這個參數得值不能是列名稱。
4 Replacing Special Delimiters During Hive Import----特殊字符
**當數據中包含HIVE的分隔符時,想要清除這些分隔符。
sqoop import \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table cities \
--hive-import \
--hive-drop-import-delims
**也能夠替換這些分隔符:
sqoop import \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table cities \
--hive-import \
--hive-delims-replacement "SPECIAL"
**hive 分隔符有: \n, \t, and \01
5 Using the Correct NULL String in Hive
sqoop import \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table cities \
--hive-import \
--null-string '\\N' \
--null-non-string '\\N'
**hive處理空字符默認用:/N
**sqoop處理空字符默認用:null
**不會拋異常。坑爹!!! 能夠存在空值,可是沒法查詢操做。有個卵用~
6 ***Importing Data into HBase
sqoop import \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table cities \
--hbase-table cities \
--column-family world
**To insert data into HBase there are three mandatory parameters:
1 表名
2 列族名稱
3 行鍵
** --hbase-row-key parameter.
**HBase不會自動建表。須要指定 --create-hbasetable.
**運行導入命令之前,列族和表必須存在
7 Importing All Rows into HBase
**sqoop import \
-Dsqoop.hbase.add.row.key=true \
--connect jdbc:mysql://192.168.130.221/sqoop \
--username root \
--password root \
--table cities \
--hbase-table cities \
--column-family world
**HBase中不容許存在空值。
**HBase序列化的時候會跳過空值
**sqoop.hbase.add.row.key指示Sqoop插入行的鍵列兩次,一次
做爲行標識符,而後再次在數據自己。即便全部其餘列包含空的行鍵的列至少不會是空的,這將容許插入該行在HBase。
8 Improving Performance When Importing into HBase
**在導入前,HBase建立表時,多區域。more regions
hbase> create 'cities', 'world', {NUMREGIONS => 20, SPLITALGO => 'HexString Split'}
**默認狀況下,每個新的HBase表只有一個區域,能夠僅經過一個服務區域服務器。這意味着,每個新的表將只提供一個物理節點。