sqoop實戰(五)

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

**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。

Improving Performance When Importing into HBase

**在導入前,HBase建立表時,多區域。more regions

hbase> create 'cities', 'world', {NUMREGIONS => 20, SPLITALGO => 'HexString Split'}


**默認狀況下,每個新的HBase表只有一個區域,能夠僅經過一個服務區域服務器。這意味着,每個新的表將只提供一個物理節點。

相關文章
相關標籤/搜索