添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
安静的墨镜  ·  @uiw/react-table - npm·  1 周前    · 
好帅的扁豆  ·  Python ...·  3 月前    · 
至今单身的仙人球  ·  Exception in ...·  4 月前    · 

引言

本系列上一篇文章以 Oracle 数据源为例介绍了如何在 SAP HANA 服务器端安装和配置 SDA 数据源驱动。 SDA 支持的大多数数据源都是数据库,所以安装与配置过程大致相同。但是, Hadoop 数据源相对其他 SDA 数据源较为特殊,作为一个分布式数据处理平台, Hadoop 的数据通常存储在分布式文件系统 HDFS NoSQL 数据库 HBase 中,这二者都不直接支持 ODBC 协议。 Hadoop 家族的 Hive Impala 等数据查询工具能够以 SQL 方式操作存储在 HDFS HBase 中的数据,并支持通过 ODBC 访问数据。因此, SDA 可以通过 Hive Impala 访问 Hadoop 数据源。本文讲解 SDA 如何利用 Hive 访问存储在 HDFS 中的数据。


部署 Hadoop Hive

SAP HANA 官方支持的 Hadoop 版本是 Intel Distribution for Apache Hadoop version 2.3( 包括 Apache Hadoop version 1.0.3 Apache Hive 0.9.0) 。虽然官方的支持列表中只有 Intel Distribution for Apache Hadoop(IDH) 但是通过实验验证得知,普通的 Apache Hadoop Hive 同样可以通过 SDA 进行访问。本文实验使用三个结点组成的 Hadoop 集群, Hadoop Hive 的版本是: Apache Hadoop 1.1.1 Apache Hive 0.12.0 关于 Hadoop Hive 的安装和配置在此就不多说了,有兴趣的读者请参考相关资料。

部署好 Hadoop Hive 后,我们需要准备一些数据,实验使用的是一张用户信息表。先介绍一下表结构:


列名

数据类型

描述

USERID

VARCHAR(20)

ID

GENDER

VARCHAR(6)

性别

AGE

INTEGER

年龄

PROFESSION

VARCHAR(20)

职业

SALARY

INTEGER

工资收入

Hive 支持从文件导入数据,本文实验从 CSV(Comma Separated Value) 文件导入数据到表格中。我们先在 Hive Shell 中用以下语句创建一张表。

create table users ( USERID string , GENDER string , AGE int , PROFESSION string, SALARY int )

row format delimited

fields terminated by '\t';

然后,将 CSV 中的数据导入 users 表中:

load data local inpath '/input/file/path'

overwrite into table users ;

此处是从本地文件系统导入数据, Hive 同样支持从 HDFS 导入数据。本文实验数据量为 1000000 行。导入完成之后, select count(*) from users 查看记录数,结果如下图:

从上图可以看到, Hive 调用了 MapReduce 框架进行数据查询, count 一百万行数据用了 14.6 秒。再查询前 10 条记录:

查询 10 条语句用了 0.1 秒。


安装与配置 HiveODBC 驱动

和其他 SDA 数据源一样,安装 HiveODBC 驱动之前需要在 SAP HANA 服务器端安装 unixODBC 驱动管理器。 HiveODBC 需要 unixODBC-2.3.1 或以上版本。关于 unixODBC 的安装,详见参考文献 [2] 装好驱动管理器后再安装 HiveODBC 驱动程序。如文献 [2] 中介绍, SAP 官方推荐使用 Simba Technologies 提供的 HiveODBC 驱动。

1. 下载 Simba HiveODBC 驱动包后将其解压至指定文件夹,

进入 / driver_install_dir /samba/hiveodbc/lib/64/( 如果是 32 位系 统则此处的 64 32 代替 )

文件夹,确认存在驱动文件 libsimbahiveodbc64.so

2. 以 <sid>adm 用户登陆 SAP HANA 服务器;

3. 用 HDB stop 命令停止 SAP HANA

4. 将文件 / driver_install_dir /simba/hiveodbc/Setup/simba.hiveodbc.ini

拷贝到 <sid>adm 的家目录下:

cp / driver_install_dir /simba/hiveodbc/Setup/simba.hiveodbc.ini  ~/.simba.hiveodbc.ini

5. 用 vim 打开 ~/.simba.hiveodbc.ini 文件;

6. 如果有一行是 DriverManagerEncoding=UTF-32 ,将其改为 UTF-16

7. 确认 ErrorMessagePath=/driver_install_dir/simba/hiveodbc/ErrorMessages,

如果不对则更改过来;

8. 注释掉 ODBCInstLib=libiodbcint.so 这一行,再加上一行: ODBCInstLib=libodbcinst.so

9. 编辑 <sid>adm 家目录下的 .odbc.ini 文件,加入 hive DSN hive 端口默认为 10000 ,如:

[hive1]

Driver= / driver_install_dir /simba/hiveodbc/lib/64/libsimbahiveodbc64.so

Host= <IP>

Port= 10000

10. 在 $HOME/.customer.sh 下设置以下环境变量:

export LD_LIBRARY_PATH=

$LD_LIBRARY_PATH: / driver_install_dir /simba/hiveodbc/lib/64/

export ODBCINI=$HOME/.odbc.ini

11. 用 isql 检查是否可成功连接到 Hadoop isql –v hive1

12. 如果连接成功,启动 SAP HANA


创建 HIVE 数据源

在确认用 isql 能够成功连接 hive 后,用文献 [1] 中介绍的方法在 HANA Studio 中创建远程数据源。注意,使用 SQL 语句创建数据源时用 ADAPTER 关键字指定 HIVEODBC,图形化界面创建时,Adapter Name选择HADOOP(ODBC)。

Hive数据源创建成功后, 查看远程数据源中的表,如下图所示:

查询 Hive 虚表

使用文献 [1] 介绍的方法添加一张虚表 HiveUsers 对应 Hive 中的 users 表,在 SQL Editor count 该虚表,结果如下:

以上结果显示, count HiveUsers 用了 14.1 秒,和在 Hive count 相差无几。由此可以看出,对于网络数据传输较小的操作,用SDA操作远程数据源和远程数据源本地操作效率相当;同时,以上结果也说明 Hive 的数据查询效率是较低的,它适合批处理任务,而对实时性要求较高的应用不适合使用 Hive

总结

本文通过一个简单的数据查询示例讲解了 SDA 如何通过 Hive 访问存储在 Hadoop 中的数据。 Hive 是为 Hadoop 提供 SQL 接口的工具之一,从实验结果可看出, Hive 的查询效率并不算高,后续文章将介绍 SDA 如何通过其他的 Hadoop 数据查询工具 ( Impala) 操作 Hadoop 数据。

想获取更多 SAP HANA 学习资料或有任何疑问,请关注新浪微博 @HANAGeek !我们欢迎你的加入!

转载本文章请注明作者和出处 http://scn.sap.com/community/chinese/hana/blog/2014/03/17/sap-hana-smart-data-access-%E4%B8%89-%E5%A... ,请勿用于任何商业用途。

参考文献

  1. SAP HANA Smart Data Access (一)——初识 SDA
  2. SAP HANA Smart Data Access (二)—— SDA 数据源驱动的安装与配置”
  3. SAP HANA Administrator Guide 6.1.1 章节。
HANA on-premise - Memory error with SELECT COUNT(*) on Calculation View in Technology Q&A RAP Unit Testing: How to Create a Draft Entity Test Double (Managed Scenario) in Technology Q&A smart facet chart is not showing in object page of fiori elements in Technology Q&A SAP Fiori Tools 2411 Update: Enhanced Full-Stack Development, AI Integration, and More Open Source in Technology Blogs by SAP