Hana是德國sap公司2011年推出來的高性能內存數據庫。因為采用了列式存儲和內存模型,所以性能相當不錯,10億數據的查詢也能做到毫秒級響應。不過這個數據庫相當的貴,據說一年要上百萬美金,普通的小公司可hold不住。所以目前在國內,使用hana的公司也屈指可數。甚至,很多搞開發的小哥哥小姐姐可能都只是聽說過。
既然Hana性能這么好,那當然要用來處理“大數據”了,不然怎么體現出他的優勢呢。所以經常需要從hadoop平台上將數據導過來,部分不常用的hana表也可以在hdfs上備份存放。
哇,廢話好多。。。下面就跟大家分享一下如何用sqoop實現hana表和hdfs文件/hive表的數據互導。
操作步驟如下:
1)首先你當然需要一個裝了hive的hadoop集群,一個裝了hana服務端程序的服務器,一台裝了本地hana studio的客戶端電腦哈哈哈
2)將hana的驅動jar包(ngdbc.jar)放入sqoop的lib目錄下。
3.1)從hdfs導入到hana:
先要在hana上建好對應的表格,注意字段類型和長度一定要合格,不然后面會job失敗,數據只能導入一部分。
然后集群上執行sqoop命令:
sqoop export \
--batch \
--connect "jdbc:sap://xx.xx.xx.xx:3xx15/" \
--driver com.sap.db.jdbc.Driver \
--username "YourHanaUserName" \
--password "YourHanaPassword" \
--table "schemaName.tableName" \
--export-dir "/xxx/xxx" \
--input-fields-terminated-by "\001" \
--input-null-string NULL
然后就可以在hana studio查看數據咯
3.2 從hana到hdfs
集群執行sqoop命令:
sqoop import \
--connect "jdbc:sap://xx.xx.xx.xx:3xx15/" \
--driver com.sap.db.jdbc.Driver \
--username "YourHanaUserName" \
--password "YourHanaPassword" \
--table "schemaName.tableName" \
--delete-target-dir \
--target-dir "/xxx/xx" \
--query "select * from schemaName.tableName where 1=1 and $CONDITIONS" \
--m 4
如果想要在導入數據到hdfs的同時建立hive表,命令如下:
sqoop import \
--connect "jdbc:sap://xx.xx.xx.xx:3xx15/" \
--driver com.sap.db.jdbc.Driver \
--username "YourHanaUserName" \
--password "YourHanaPassword" \
--table "schemaName.tableName" \
--delete-target-dir \
--target-dir "/xxx/xx" \
--query "select * from schemaName.tableName where 1=1 and $CONDITIONS" \
--hive-import \
--hive-table hiveDatabaseName.hiveTableName \
--m 4
注意:sqoop命令可以直接創建hive表,但是表所在的數據庫需要提前創建好。
轉載請注明鏈接和出處,謝謝。
歡迎對Hana感興趣的童鞋一起來交流。
