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感兴趣的童鞋一起来交流。