6.BigSQL 1
Big SQL on Hadoop Connecting to the IBM Big SQL Server and running SQL queries.
内容
连接到IBM大型SQL SERVER和运行SQL查询
1.1开始
1.2管理大型SQL状态使用命令行
1.3连接到大SQL使用JSQSH
1.4连接到SQL使用ECLIPSE
1.5使用BIGINSIGHTS控制台运行SQL查询
总结
连接到IBM Big SQL服务器并运行SQL查询
IBM Big SQL是IBM InfoSphere BigInsights产品的一个组件。在开始使用Big SQL处理Hadoop数据之前,您需要能够连接到Big SQL。有三种不同的方法可以连接到IBM Big SQL服务器。在这个练习中,您将看到如何使用这三种方法。
大SQL使用的三种方法中的第一种是JSqsh,发音为“jay-skwish”。JSqsh是用于JDBC应用程序(如Big SQL)的开源CLI。这意味着您还可以将JSqsh用于其他JDBC应用程序。
本练习中使用的另一个方法是Eclipse。通常首选Eclipse作为处理大型SQL的工具,因为其结果的格式便于用户理解。还可以在项目中的脚本中组织查询,从而更容易管理查询。
最后,使用Big SQL的另一个选项是通过BigInsights控制台。有一个基于web的大型SQL控制台,您可以在其中运行查询并获得结果。
完成本实验室动手之后,您应该能够:
o管理大SQL Server
o连接到SQL使用JSqsh大运行SQL查询
o连接到大SQL使用Eclipse运行SQL查询
o使用BigInsights控制台运行大型SQL查询
允许30 - 45分钟完成这部分的实验室。在这个实验室您将使用以下帐号登录信息:
1.1开始
__1。启动VMware映像时,如果VMware Player中尚未打开,则单击Play virtual machine按钮。
__2。选择第一个选项来加载图像。
__3。您首先需要登录到映像。使用在文档前面列出的VM映像设置屏幕凭证:
__4。通过VM设置屏幕。当您进入要求输入密码的屏幕时,使用与本文开头列出的相同的密码。
__5。使用以下凭证登录VMware虚拟机。用户名:biadmin密码:biadmin
__6。登录之后,您的屏幕应该与下面的屏幕类似。
启动BigInsights有两种方式:通过终端或简单地双击图标。这两个方法将在以下步骤中显示。
__7。现在双击BigInsights Shell图标打开终端。
__8。双击终端图标
__9。打开终端后,通过发出以下命令来更改$BIGINSIGHTS_HOME/bin目录(默认为/opt/ibm/biginsights):
cd $BIGINSIGHTS_HOME/bin or cd /opt/ibm/biginsights/bin
__10。继续并启动BigInsights环境。注意,它们需要几分钟的时间来运行
./start-all.sh
__11。如果您想停止所有组件,请执行下面的命令。然而,对于这个实验室,让所有的组件都启动
./stop-all.sh
接下来,让我们看看如何通过双击一个图标来启动所有的组件。
__12。双击Start BigInsights图标将执行执行上述步骤的脚本。一旦所有的组件都启动了,终端出口就设置好了。
__13。您可以以类似的方式停止组件,双击stop Biginsights图标。
现在已经启动了组件,可以继续下一节了。
注意:偶尔,您可能需要暂停您的实验室图像,并在下一次继续您的工作。这样做可能会破坏BigInsights实例,其中一些组件不能正常工作。如果您发现自己恢复到一个实验室映像,而事情不能正常工作,那么继续并重新启动BigInsights实例。
1.2使用命令行管理大SQL状态
所有BigInsights组件已经启动。有一种方法只管理大型SQL组件。在本节中,您将看到如何使用命令行管理大型SQL服务器。或者,您也可以使用BigInsights在命令行中启动和停止大型SQL服务器:
$BIGINSIGHTS_HOME/bin/start.sh bigsql
$BIGINSIGHTS_HOME/bin/stop.sh bigsql
__1。打开一个新的终端窗口。右键单击桌面并选择Open in Terminal
__2。切换到密码为bigsql的bigsql用户。在终端输入su bigsql并在提示时提供密码。
__3。切换到大SQL bin目录。输入:
cd $BIGSQL_HOME/bin
__4。检查大型SQL服务器的状态。输入:
./bigsql status
注意,这里有一个很大的SQL v1实例。如果您还记得,BigInsights的当前版本附带了Big SQL和Big SQL v1(旧的遗留版本)。只有当您需要对HBase的支持,或者您的应用程序需要特定的v1特性(在Big SQL的当前版本中还不支持这些特性)时,您才会真正使用v1。
__5。停止大SQL服务器,输入:
./bigsql stop
__6。服务器停止后,检查大型SQL服务器的状态。输入:
./bigsql status
__7。重新启动大SQL服务器,输入:./bigsql start
__8。关闭任何打开的终端。
1.3使用JSqsh连接大SQL
在本节中,您将使用JSqsh连接大SQL。您将设置一个大型SQL连接,并运行一些简单的查询来显示与JSqsh的交互。
__1。打开一个新的终端。右键单击桌面并选择Open in Terminal打开一个新命令行。
__2。为JSqsh创建一个大型SQL连接。输入以下内容:
$JSQSH_HOME/bin/jsqsh --setup
__3。启动连接向导。输入字母c。
__4。有两种不同的联系。一个用于bigsql,一个用于bigsql1。在这个实验中,您将使用端口51000上的bigsql数据库。选择大的SQL驱动程序。输入数字1。
__5。您可以看到已经定义了许多变量。确保变量的值与屏幕截图中的值相同。对于password变量,请指定密码,这样就不需要在每次连接到大型SQL连接时都提供密码。选择密码变量。输入数字5。
__6。当提示时,输入密码:biadmin并按回车。你会看到星号代替密码:
__7。通过执行测试操作,确保您输入了正确的密码。输入字母t,运行测试。
__8。如果连接测试不成功,请确保更新密码变量并重新运行测试。如果测试成功,保存连接配置文件。输入字母s以保存。
__9。输入字母q退出JSqsh连接向导。
__10。输入quit以退出JSqsh。
__11。重新启动JSqsh,但这一次,指定我们刚刚设置的bigsql连接。
$JSQSH_HOME/bin/jsqsh bigsql
因为您已经在连接配置文件中保存了密码,所以不会提示您再次提供密码。
__12。要从JSqsh获得帮助,输入:
\help
__13。要查看在JSqsh中使用的命令列表,输入
\help commands
__14。要查看模式,输入:
\show schemas
__15。为了一次显示所有可用表的基本信息,输入:
\show tables –e | more
JSqsh more操作符将输出分解为多个页面。您可以按空格键继续查看输出,也可以按字母q退出并转到输出的末尾。
__16。使用Big SQL创建一个简单的Hadoop表。复制粘贴或输入如下:
create hadoop table test1 (col1 int, col2 varchar(5));
因为没有为表指定模式名,所以它是在默认模式下创建的,即您的用户名biadmin。上面的语句相当于:
create hadoop table biadmin.test1 (col1 int, col2 varchar(5));
__17。检查表是否已经创建。输入:
\show tables –e | more
您会注意到刚才输入的命令列出了所有的表,包括系统表。可能很难找到特定的表。使用下一步中的命令缩小搜索结果的范围。
__18。只显示用户表(避免视图和系统表)输入:
\tables user
使用这个命令,您可能还会看到来自其他用户的表,但是您可能没有权限查询它们。
__19。要查看您的表,即biadmin,输入:
\tables –s BIADMIN
注意这里提供的登录名是大写的。这是因为系统将所有名称都改为大写。搜索是区分大小写的,因此如果您不提供大写的登录名,您将看不到您所期望的内容。屏幕截图显示,如果您使用小写字母进行查询,您将不会看到test1表。当您使用大写BIADMIN进行查询时,您将看到test1表。
__20。向test1表中插入一行。键入:
insert into test1 values (1, ‘one’);
重要的是要提醒您,INSERT语句应该只用于测试目的。插入操作没有在集群上并行化;因此,它在加载大量数据时效率非常低。建议您使用下一个练习中将看到的批量加载操作符之一。这些操作符是并行化和优化的,因此查询在生产环境中会产生更好的性能。
__21。查看test1表类型:
\describe BIADMIN.TEST1
再次注意,模式和表名使用大写,因为这些值在系统编目表中折叠为大写。
__22。要查看插入的行,输入:
select * from test1;
在查询中使用时,不需要大写任何名称。
__23。发出一个查询,将返回的行数限制为5。例如,从syscat表中选择前5行:
select tabschema, tabname from syscat.tables fetch first 5 rows only;
在处理大量数据时,限制查询返回的行数有利于开发。
__24。JSqsh有一些应该考虑的有用命令。您可以查看最近在JSqsh shell中执行的命令的历史。输入:
\history
__25。例如,要从历史记录中检索查询,要检索语句4,输入!4。这将把查询带到当前命令行。然后你只需要加上a;(分号)到最后一行并按回车以运行语句。
__26。要收回先前执行的语句,请键入!!(两个感叹号,没有空格)。然后加上a;(分号)最后运行语句。
__27。JSqsh还具有将输出管道输送到外部程序的能力。将下一条语句的输出通过管道输送到更多的运算符。select tabschema, tabname from syscat.tables
go | more
注意,由于第一行末尾没有分号,因此语句没有运行。这是因为大SQL的默认结束符是一个分号。第二行中的go命令实际上是触发Big SQL运行该语句的原因。实际上,在幕后,末尾的分号是JSqsh go命令的捷径。
__28。试验JSqsh将输出重定向到本地文件而不是控制台显示的能力。在命令shell中输入以下几行,根据环境的需要调整路径信息。
select tabschema, colname, colno, typename, length
from syscat.columns
where tabschema = USER and tabname= ‘TEST1’
go > $HOME/test1.out
__29。打开一个新的终端窗口并输入:
gedit $HOME/test1.out
来查看输出。当您完成查看结果时,请关闭gedit屏幕。
__30。在生产环境中,SQL语句可能位于脚本文件中。维护SQL脚本文件对于重复执行各种查询非常方便。使用以下SQL查询创建一个新文件。使用与打开test1.out相同的命令行。文件,创建一个新的test1.sql文件。输入:
gedit $HOME/test1.sql
__31。复制并粘贴以下内容到test1中。
select tabschema, tabname from syscat.tables fetch first 5 rows only;
select tabschema, colname, colno, typename, length
from syscat.columns
fetch first 10 rows only;
__32。保存并关闭该文件。
__33。调用SQL脚本(test1.sql)。使用相同的命令行,输入:
$JSQSH_HOME/bin/jsqsh bigsql < $HOME/test1.sql
__34。检查输出。
__35。清理数据库。在JSqsh窗口中,输入:
drop table test1;
__36。删除test1.sql和test1.out从$HOME目录中
__37。关闭任何打开的窗口
1.4 Connecting to Big SQL using Eclipse
在本节中,您将看到如何使用Eclipse(本实验室使用Eclipse Juno)来使用Big SQL。人们通常更喜欢使用Eclipse编写查询,因为结果是格式化的,脚本是在项目中组织的。
在继续本节之前,请检查BigInsights控制台中的cluster status选项卡,确保BigInsights服务已经启动并正在运行。如果BigInsights还没有启动,那就继续启动它。
__1。双击桌面上的图标启动Eclipse。
__2。在出现提示时选择默认工作区。
__3。QSE映像可能有您可以使用的现有连接,但是这个练习向您展示了如何创建您自己的连接。打开数据库开发透视图。
Window > Open Perspective > Other > Database Development
__4。在Data Source Explorer窗格中,右键单击 Database Connections > Add Repository
__5。在New Connection Profile菜单中,选择Big SQL JDBC驱动程序并输入新驱动程序的名称(例如My Big SQL Connection)。单击Next。
__6。为您的环境输入适当的连接信息。
Schema: bigsql
Host: bivm.bim.com
Port number: 51000
User name: bigsql
Password: bigsql
__7。通过单击Test connection按钮测试连接。
__8。确保测试成功。否则调整属性。单击Save password复选框。
__9。单击Properties标题下的Optional选项卡,以公开另一个允许向连接添加更多属性的菜单。
__10。如果还没有添加此选项,那么可以这样做:
__i。在属性字段中,输入retrieveMessagesFromServerOnGetMessage
__ii。在Value字段中,输入true
__iii。单击Add
__11。再次单击Test Connection以验证是否可以成功连接到目标大型SQL服务器。
__12。单击Finish创建连接。
__13。在数据源资源管理器中,展开数据源列表,并验证出现了大型SQL连接。
__14。回到BigInsights视角。
__15。为你的工作创建一个大的洞察项目。在Eclipse菜单栏中,单击 File > New > Other。展开BigInsights文件夹,选择BigInsights Project,然后单击Next
__16。在项目名称字段中输入myBigSQL并单击Finish。
__17。创建一个新的SQL脚本文件。在Eclipse菜单栏中,单击 File > New > Other。展开BigInsights文件夹,选择SQL Script,然后单击Next。
__18。在新的SQL文件窗口中,在Enter或select父文件夹字段中,选择myBigSQL。新的SQL文件存储在这个项目文件夹中。
__19。在文件名字段中,键入aFirstFile。sql扩展是自动添加的。单击Finish。
__20。在选择连接配置文件窗口中,选择My Big SQL连接(在前面创建的)。所选连接的属性显示在properties字段中。当您选择Big SQL连接时,用于编辑SQL文件的编辑器中将激活Big SQL特定于数据库的上下文助手和语法检查。验证连接使用这里的Properties窗格中显示的JDBC驱动程序和数据库名称。
__21。单击Finish
了解驱动程序选择:您可能想知道为什么使用使用com.ibm.com.db2.jcc.DB2 driver class.的连接。2014年,IBM发布了一个通用SQL查询引擎,作为其DB2和BigInsights产品的一部分。这样做可以在其关系DBMS和基于hadoop的产品之间实现更大的SQL通用性。它还为Hadoop (BigInsights)用户带来了更广泛的SQL功能。可以通过DB2驱动程序访问这个通用查询引擎。Big SQL驱动程序仍然是可操作的,并提供到早期特定于biginsights的SQL查询引擎(也称为Big SQL v1)的连接。这个实验室的重点是使用公共SQL查询引擎,也称为Big SQL。
__22。将以下语句复制到刚刚创建的SQL脚本中:
create hadoop table test1 (col1 int, col2 varchar(5));
在某些情况下,Eclipse SQL编辑器可能会将某些SQL语句标记为错误。你可以忽略这些警告,继续实验。保存你的文件。按CTRL+S或单击 File > Save.
__24。运行脚本。在脚本中右键单击以显示选项菜单。选择Run SQL或按F5。这会导致脚本中的所有语句都被执行。
对于本实验室的其余部分,要单独执行每个SQL语句,请突出显示希望运行的语句,然后按F5。在开发带有多条语句的SQL脚本时,通常最好先单独测试每条语句,以验证每条语句是否按预期工作。
__25。检查显示在屏幕底部的SQL Results窗格。如果需要,双击SQL Results选项卡以放大此窗格。然后再次双击选项卡,将窗格返回到其正常大小。验证语句执行成功。您的大SQL数据库现在包含一个名为BIGSQL的新表。TEST1中BIGSQL是当前用户的名称。注意,您的模式和表名是文件夹到大写。
__26。从Eclipse项目中,向系统查询关于test1表的元数据。输入:
select tabschema, colname, colno, typename, length from syscat.columns where tabschema = USER and tabname= ‘TEST1’;
如果你想知道,syscat。列是大型SQL服务通过系统编目数据为您自动维护的许多视图之一。
__27。检查SQL结果以验证查询是否成功执行,然后单击Results1选项卡查看其输出。
__28。保存并关闭文件和Eclipse环境。这一节讲完了。
1.5使用BigInsights控制台运行大型SQL查询
__1。启动BigInsights控制台。双击桌面上的web控制台图标:
__2。使用凭证bigsql / bigsql登录。
__3。在Welcome选项卡上,单击Quick Links部分下的 Run Big SQL queries 。一个新的浏览器选项卡打开。您将在此选项卡上运行大型SQL查询。
有一组单选按钮来选择使用哪个大SQL连接。在实验中,您将使用Big SQL。但是,如果您需要大型SQL v1,请选择适当的单选按钮。还有一个下拉菜单,其中包含已执行查询的历史记录。您可以使用它来运行重复的查询。
__4。在前面创建的test1表中插入一些值。键入:
insert into test1 values (1, ‘one’);
insert into test1 values (2, ‘two’);
您可以在输入框中输入这两个语句。它们都将由Big SQL执行。
__5。单击Run。您可能需要向下滚动才能到达Run按钮。
__6。查询表以查看结果。输入:
select * from test1;
__7。结果选项卡将与运行结果一起出现。
如果您输入多个select语句,每个语句以分号结束,那么每个语句将显示多个results选项卡。
__8。通过执行以下操作来清理:
drop table test1;
__9。关闭任何打开的窗口和应用程序。
总结
完成这个练习后,您现在应该能够开始使用Big SQL,使用三种方法之一:JSqsh、Eclipse和BigInsights控制台。
7.BigSQL 2
Big SQL on Hadoop Working with Big SQL data
使用SQL数据
1.1开始
1.2创建SQL架构和大表
1.3加载数据到大SQL表
1.4大SQL查询数据表和视图
1.5使用额外的负载操作
1.6处理分区表
总结
使用大SQL数据
本练习向您展示如何创建大SQL模式和表,然后使用load操作将数据加载到这些表中。该练习包括创建各种SQL语句来查询表和视图中的数据。然后,该练习将介绍额外的批量加载操作和分区表。
在完成这个动手实验之后,您应该能够:
-创建大型SQL模式和表
-将数据加载到大型SQL表中
-在大型SQL表和视图中查询数据
-使用额外的加载操作
-处理分区表
在60分钟内完成这部分实验。在整个实验过程中,您将使用以下帐户登录信息:
1.1开始
如果你还没有完成练习你应该为这个实验做准备。下面列出了启动BigInsights的步骤。
__1。启动VMware映像时,如果VMware Player中尚未打开,则单击Play virtual machine按钮。
__2。选择第一个选项来加载图像。
__3。您首先需要登录到映像。使用在文档前面列出的VM映像设置屏幕凭证:
__4。通过VM设置屏幕。当您进入要求输入密码的屏幕时,使用与本文开头列出的相同的密码。
__5。使用以下凭证登录VMware虚拟机。用户名:biadmin密码:biadmin
__6。登录之后,您的屏幕应该与下面的屏幕类似。
启动BigInsights有两种方式:通过终端或简单地双击图标。这两个方法将在以下步骤中显示。
__7。现在双击BigInsights Shell图标打开终端。
__8。双击终端图标
__9。打开终端后,通过发出以下命令,更改为$BIGINSIGHTS_HOME/bin目录(默认为/opt/ibm/biginsights):
cd $BIGINSIGHTS_HOME/bin
or
cd /opt/ibm/biginsights/bin
__10。继续并启动BigInsights环境。注意,它们需要几分钟的时间来运行
./start-all.sh
__11。如果您想停止所有组件,请执行下面的命令。但是,对于这个实验,让所有组件都处于启动状态。
./stop-all.sh
接下来,让我们看看如何通过双击一个图标来启动所有组件。
__12。双击Start BigInsights图标将执行执行上述步骤的脚本。一旦所有的组件都启动了,终端出口就设置好了。
__13。您可以以类似的方式停止组件,双击stop Biginsights图标。
现在已经启动了组件,可以继续下一节了。
注意:偶尔,您可能需要暂停您的实验室图像,并在下一次继续您的工作。这样做可能会破坏BigInsights实例,其中一些组件不能正常工作。如果您发现自己恢复到一个实验室映像,而事情不能正常工作,那么继续并重新启动BigInsights实例。
1.2创建大型SQL模式和表
__1。启动一个新的终端。
__2。开始JSqsh。输入:
$JSQSH_HOME/bin/jsqsh bigsql
__3。创建一个您将在本实验室的其余部分中使用的模式。输入:
use mybigsql;
这将创建mybigsql模式并将其设置为默认模式。
本节后面的示例假设示例数据位于/opt/ibm/biginsights/bigsql/samples/data目录中。这是BigInsights VMware映像上数据的位置,也是典型的BigInsights安装中的默认位置。
此外,/opt/ibm/biginsights/bigsql/samples/queries目录包含SQL脚本,其中包括这个实验室中使用的CREATE表、LOAD和SELECT语句,以及其他语句。
本教程使用一家虚构公司的销售数据,该公司向第三方零售商商店销售和分销户外产品,并通过其在线商店直接向消费者销售。它在一系列事实表和维度表中维护数据,这在关系数据仓库环境中很常见。在这个实验室中,您将探索如何创建、填充和查询星型模式数据库的一个子集,以研究公司的性能和产品。请注意,BigInsights提供了创建和填充组成示例GOSALESDW数据库的60多个表的脚本。在这个实验室里,你用不到10张这样的桌子。
__4。在JSqsh控制台中,复制粘贴这个表定义来创建区域信息的维度表:
CREATE HADOOP TABLE IF NOT EXISTS go_region_dim
(
country_key INT NOT NULL,
country_code INT NOT NULL,
flag_image VARCHAR(45),
iso_three_letter_code VARCHAR(9) NOT NULL,
iso_two_letter_code VARCHAR(6) NOT NULL,
iso_three_digit_code VARCHAR(9) NOT NULL,
region_key INT NOT NULL,
region_code INT NOT NULL,
region_en VARCHAR(90) NOT NULL,
country_en VARCHAR(90) NOT NULL,
region_de VARCHAR(90), country_de VARCHAR(90), region_fr VARCHAR(90),
country_fr VARCHAR(90), region_ja VARCHAR(90), country_ja VARCHAR(90),
region_cs VARCHAR(90), country_cs VARCHAR(90), region_da VARCHAR(90),
country_da VARCHAR(90), region_el VARCHAR(90), country_el VARCHAR(90),
region_es VARCHAR(90), country_es VARCHAR(90), region_fi VARCHAR(90),
country_fi VARCHAR(90), region_hu VARCHAR(90), country_hu VARCHAR(90),
region_id VARCHAR(90), country_id VARCHAR(90), region_it VARCHAR(90),
country_it VARCHAR(90), region_ko VARCHAR(90), country_ko VARCHAR(90),
region_ms VARCHAR(90), country_ms VARCHAR(90), region_nl VARCHAR(90),
country_nl VARCHAR(90), region_no VARCHAR(90), country_no VARCHAR(90),
region_pl VARCHAR(90), country_pl VARCHAR(90), region_pt VARCHAR(90),
country_pt VARCHAR(90), region_ru VARCHAR(90), country_ru VARCHAR(90),
region_sc VARCHAR(90), country_sc VARCHAR(90), region_svVARCHAR(90),
country_sv VARCHAR(90), region_tc VARCHAR(90), country_tc VARCHAR(90),
region_th VARCHAR(90), country_th VARCHAR(90)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
在继续之前,让我们先看看查询。请注意HADOOP关键字用于创建HADOOP表。您需要指定这个关键字,以便为Hadoop环境创建表。您可以通过启用 SYSHADOOP.COMPATIBILITY_MODE. 来更改这一点。
还请注意,您没有显式地指定表的模式。表将在默认模式中创建,我们将其指定为myBigSQL。
如果您没有执行上面的USE命令,那么登录名bigsql将被用作默认模式。
如果您在定义中对表进行了限定,那么将使用该模式而不是默认模式。
表格的数据以行格式分隔,字段以制表符(\t)结束,行以新行(\n)结束。这些数据将以TEXTFILE格式存储,以便于广泛的应用程序使用。
__5。启动BigInsights web控制台。
__6。使用用户名:bigsql和密码bigsql登录。
__7。转到Files选项卡查看表定义。
__8。
__9。返回到JSqsh shell,复制并粘贴下一个查询,以创建销售订单的跟踪方法:
CREATE HADOOP TABLE IF NOT EXISTS sls_order_method_dim
(
order_method_key INT NOT NULL,
order_method_code INT NOT NULL,
order_method_en VARCHAR(90) NOT NULL,
order_method_de VARCHAR(90), order_method_fr VARCHAR(90), order_method_ja VARCHAR(90), order_method_cs VARCHAR(90), order_method_da VARCHAR(90), order_method_el VARCHAR(90), order_method_es VARCHAR(90), order_method_fi VARCHAR(90), order_method_hu VARCHAR(90), order_method_id VARCHAR(90), order_method_it VARCHAR(90), order_method_ko VARCHAR(90), order_method_ms VARCHAR(90), order_method_nl VARCHAR(90), order_method_no VARCHAR(90), order_method_pl VARCHAR(90), order_method_pt VARCHAR(90), order_method_ru VARCHAR(90), order_method_sc VARCHAR(90), order_method_sv VARCHAR(90), order_method_tc VARCHAR(90), order_method_th VARCHAR(90)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE ;
__10。创建具有各种语言的产品品牌信息的查询表。复制粘贴这个:
CREATE HADOOP TABLE IF NOT EXISTS sls_product_brand_lookup
(
product_brand_code INT NOT NULL,
product_brand_en VARCHAR(90) NOT NULL,
product_brand_de VARCHAR(90), product_brand_fr VARCHAR(90),
product_brand_ja VARCHAR(90), product_brand_cs VARCHAR(90),
product_brand_da VARCHAR(90), product_brand_el VARCHAR(90), product_brand_es VARCHAR(90), product_brand_fi VARCHAR(90), product_brand_hu VARCHAR(90), product_brand_id VARCHAR(90), product_brand_it VARCHAR(90), product_brand_ko VARCHAR(90), product_brand_ms VARCHAR(90), product_brand_nl VARCHAR(90), product_brand_no VARCHAR(90), product_brand_pl VARCHAR(90), product_brand_pt VARCHAR(90), product_brand_ru VARCHAR(90), product_brand_sc VARCHAR(90), product_brand_sv VARCHAR(90), product_brand_tc VARCHAR(90), product_brand_th VARCHAR(90)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE ;
__11。创建产品维度表。复制粘贴这个:
CREATE HADOOP TABLE IF NOT EXISTS sls_product_dim
(
product_key INT NOT NULL, product_line_code INT NOT NULL,
product_type_key INT NOT NULL, product_type_code INT NOT NULL,
product_number INT NOT NULL, base_product_key INT NOT NULL,
base_product_number INT NOT NULL, product_color_code INT,
product_size_code INT, product_brand_key INT NOT NULL,
product_brand_code INT NOT NULL, product_image VARCHAR(60),
introduction_date TIMESTAMP, discontinued_date TIMESTAMP
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE ;
__12。在各种语言表中创建产品线信息。复制和粘贴:
CREATE HADOOP TABLE IF NOT EXISTS sls_product_line_lookup
(
product_line_code INT NOT NULL, product_line_en VARCHAR(90) NOT NULL,
product_line_de VARCHAR(90), product_line_fr VARCHAR(90), product_line_ja VARCHAR(90), product_line_cs VARCHAR(90), product_line_da VARCHAR(90), product_line_el VARCHAR(90), product_line_es VARCHAR(90), product_line_fi VARCHAR(90), product_line_hu VARCHAR(90), product_line_id VARCHAR(90), product_line_it VARCHAR(90), product_line_ko VARCHAR(90), product_line_ms VARCHAR(90), product_line_nl VARCHAR(90), product_line_no VARCHAR(90), product_line_pl VARCHAR(90), product_line_pt VARCHAR(90), product_line_ru VARCHAR(90), product_line_sc VARCHAR(90), product_line_sv VARCHAR(90), product_line_tc VARCHAR(90), product_line_th VARCHAR(90)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
__13。创建产品查询表。复制和粘贴:
CREATE HADOOP TABLE IF NOT EXISTS sls_product_lookup
(
product_number INT NOT NULL, product_language VARCHAR(30) NOT NULL,
product_name VARCHAR(150) NOT NULL, product_description VARCHAR(765)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
__14。为sales创建事实表。复制和粘贴:
CREATE HADOOP TABLE IF NOT EXISTS sls_sales_fact
(
order_day_key INT NOT NULL, organization_key INT NOT NULL,
employee_key INT NOT NULL, retailer_key INT NOT NULL,
retailer_site_key INT NOT NULL, product_key INT NOT NULL,
promotion_key INT NOT NULL, order_method_key INT NOT NULL,
sales_order_key INT NOT NULL, ship_day_key INT NOT NULL,
close_day_key INT NOT NULL, quantity INT, unit_cost DOUBLE,
unit_price DOUBLE, unit_sale_price DOUBLE, gross_margin DOUBLE,
sale_total DOUBLE, gross_profit DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE ;
__15。创建用于市场促销的事实表。复制和粘贴:
CREATE HADOOP TABLE IF NOT EXISTS mrk_promotion_fact
(
organization_key INT NOT NULL, order_day_key INT NOT NULL,
rtl_country_key INT NOT NULL, employee_key INT NOT NULL,
retailer_key INT NOT NULL, product_key INT NOT NULL,
promotion_key INT NOT NULL, sales_order_key INT NOT NULL,
quantity SMALLINT, unit_cost DOUBLE, unit_price DOUBLE,
unit_sale_price DOUBLE, gross_margin DOUBLE, sale_total DOUBLE,
gross_profit DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
__16。您已经创建了8个表。转到Web控制台的Files选项卡,检查是否在下面创建了八个目录biginsightshivewarehousemybigsql.db
1.3将数据加载到大型SQL表
__1。接下来,您将把数据加载到表中。将有8个LOAD语句。这一次,您将使用Eclipse完成练习的其余部分。继续并启动Eclipse。
__2。接受默认工作区。
__3。选择My Big SQL连接。
__4。您应该有一个项目myBigSQL和脚本aFirstFile.sql 。练习1中的sql。如果你没有完成练习1,回去做。
__5。使用文件中提供的示例数据将数据加载到每个表中。每次一个,发出以下每个LOAD语句,并验证每个语句都成功完成。请记住将显示的文件路径(如果需要)更改为适合您的环境的适当路径。语句将返回一条警告消息,提供有关加载的行数等的详细信息。
提示:您可以使用F5运行脚本中高亮显示的查询。您可以选择复制和粘贴所有这8条LOAD语句,然后分别高亮显示每条语句,并按F5来运行它们。如果您愿意,您可以同时运行多个语句—只需高亮显示所有语句并单击F5。
Eclipse将某些语句标记为错误。您可以忽略它们,继续实验。
注意:每条语句都将返回警告消息,提供有关加载的行数等详细信息。
加载这些语句需要一些时间。
请注意,这些load语句都包含表模式作为命令的一部分。
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.GO_REGION_DI M.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.GO_REGION_DIM overwrite;
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.SLS_ORDER_ME THOD_DIM.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.SLS_ORDER_METHOD_DIM overwrite;
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.SLS_PRODUCT_ BRAND_LOOKUP.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.SLS_PRODUCT_BRAND_LOOKUP overwrite;
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.SLS_PRODUCT_ DIM.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.SLS_PRODUCT_DIM overwrite;
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.SLS_PRODUCT_ LINE_LOOKUP.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.SLS_PRODUCT_LINE_LOOKUP overwrite;
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.SLS_PRODUCT_ LOOKUP.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.SLS_PRODUCT_LOOKUP overwrite;
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.SLS_SALES_FA CT.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.SLS_SALES_FACT overwrite;
load hadoop using file url
‘file:///opt/ibm/biginsights/bigsql/samples/data/GOSALESDW.MRK_PROMOTIO N_FACT.txt’ with SOURCE PROPERTIES (‘field.delimiter’=’\t’) INTO TABLE MYBIGSQL.MRK_PROMOTION_FACT overwrite;
__6。加载示例数据后,使用以下语句验证加载成功:
– total rows in GO_REGION_DIM = 21
select count(*) from MYBIGSQL.GO_REGION_DIM;
– total rows in sls_order_method_dim = 7
select count(*) from MYBIGSQL.sls_order_method_dim;
– total rows in SLS_PRODUCT_BRAND_LOOKUP = 28
select count(*) from MYBIGSQL.SLS_PRODUCT_BRAND_LOOKUP;
– total rows in SLS_PRODUCT_DIM = 274
select count(*) from MYBIGSQL.SLS_PRODUCT_DIM;
– total rows in SLS_PRODUCT_LINE_LOOKUP = 5
select count(*) from MYBIGSQL.SLS_PRODUCT_LINE_LOOKUP;
– total rows in SLS_PRODUCT_LOOKUP = 6302
select count(*) from MYBIGSQL.SLS_PRODUCT_LOOKUP;
– total rows in SLS_SALES_FACT = 446023
select count(*) from MYBIGSQL.SLS_SALES_FACT;
– total rows gosalesdw.MRK_PROMOTION_FACT = 11034
select count(*) from MYBIGSQL.MRK_PROMOTION_FACT;
1.4从表和视图查询大型SQL数据,
在本节中,您将有机会进一步研究已经创建并加载了数据的表。您已经了解了如何编写简单的查询。现在你将接触到一些更复杂的例子。
您将创建并运行连接来自多个表的数据的大型SQL查询,以及执行聚合和其他SQL操作。请注意,本节中包含的查询是基于BigInsights作为示例附带的查询。
本节还将使用Eclipse,但是您仍然可以选择使用JSqsh或控制台(如果您愿意的话),但是其中一些语句返回数十万行。Eclipse将结果限制为500行。您可以在数据管理首选项中更改该值。
__ 1。连接多个表中的数据,以返回已售出商品的产品名称、数量和订单方法。为此,执行以下查询:
use MYBIGSQL;
SELECT pnumb.product_name, sales.quantity, meth.order_method_en
FROM sls_sales_fact sales, sls_product_dim prod, sls_product_lookup pnumb, sls_order_method_dim meth WHERE pnumb.product_language=‘EN’ AND sales.product_key=prod.product_key AND prod.product_number=pnumb.product_number AND meth.order_method_key=sales.order_method_key;
让我们花点时间看看这个查询是做什么的。
•查询将在MYBIGSQL模式中工作。
•查询从from子句中引用的四个不同的表中进行选择。
•WHERE子句中的谓词过滤这些表中的数据。有三个等价连接(它们有助于缩小谓词中指定表的结果)。
•谓词product_language= ’ EN '还将结果限制为仅输出英语。
•SELECT子句使用别名来提高查询的可读性。例如,pnumb 在FROM子句中引用sls_product_lookup表。
•从四个表中选择三列。
重要提示:对于所有查询,您将需要指定MYBIGSQL模式,因为我们的表已经在其中创建。您可以执行使用MYBIGSQL命令或显式限定每个表。这里提供的查询需要这两个方法中的一个来工作
__2。查询返回500个结果,但是可能有更多的行。Eclipse将返回的行数限制为500,但是如果您愿意,可以更改此设置。花点时间检查一下结果,看看产品是如何销售的,数量是多少。
__3。修改查询,将order方法限制为一种类型——涉及销售访问的类型。为此,在分号前面添加以下查询谓词:AND order_method_en=‘Sales visit’
__4。运行修改后的查询。
__5。检查结果,只列出按销售拜访方法销售的产品。
__6。要找出所有方法中订单数量最多的销售方法,请添加GROUP BY子句 (group by pll.product_line_en, md.order_method_en).。此外,调用SUM聚合函数(SUM (sf.quantity))按产品和方法计算订单总数。最后,这个查询通过使用别名(例如,as Product)替换可读性更好的列标题来稍微清理输出。
use MYBIGSQL;
SELECT pll.product_line_en AS Product,
md.order_method_en AS Order_method,
sum(sf.QUANTITY) AS total
FROM
sls_order_method_dim AS md,
sls_product_dim AS pd,
sls_product_line_lookup AS pll,
sls_product_brand_lookup AS pbl,
sls_sales_fact AS sf
WHERE pd.product_key = sf.product_key
AND md.order_method_key = sf.order_method_key
AND pll.product_line_code = pd.product_line_code
AND pbl.product_brand_code = pd.product_brand_code
GROUP BY pll.product_line_en, md.order_method_en;
__7。GROUP BY子句将产品线和order方法分组在一起,这样您就可以运行SUM聚合函数来查看哪个方法最畅销。检查结果,看看总共返回了35行。
Big SQL支持基于一个或多个物理表的视图(虚拟表)。在本节中,您将创建一个跨越多个表的视图。然后使用简单的SELECT语句查询这个视图。在此过程中,您将看到可以像在关系DBMS中处理视图一样处理Big SQL中的视图。
__8。创建一个名为MYVIEW的视图,该视图提取关于营销促销中产品销售的信息。
use MYBIGSQL;
create view myview as
select product_name, sales.product_key, mkt.quantity, sales.order_day_key, sales.sales_order_key, order_method_en
from mrk_promotion_fact mkt, sls_sales_fact sales, sls_product_dim prod, sls_product_lookup pnumb, sls_order_method_dim meth
where mkt.order_day_key=sales.order_day_key and sales.product_key=prod.product_key and prod.product_number=pnumb.product_number and pnumb.product_language=‘EN’ and meth.order_method_key=sales.order_method_key;
__9。查询视图:
select * from mybigsql.myview
order by product_key asc, order_day_key asc
fetch first 20 rows only;
__10。检查结果以查看查询返回的20行。
1.5使用额外的加载运算符
本节将介绍一些额外的批量加载操作,您可以使用这些操作将数据导入Big SQL。请记住,您不希望在生产环境中使用常规插入。这是非常低效的。
使用Big SQL,可以根据查询的结果用数据填充表。在本节中,您将使用INSERT INTO …SELECT 语句从多个表检索数据并将该数据插入另一个表。执行INSERT INTO …SELECT 利用集群的机器资源,因为大型SQL可以并行地执行读(SELECT)和写(INSERT)操作。
__1。执行以下语句创建一个名为sales_report的示例表:
CREATE HADOOP TABLE MYBIGSQL.sales_report
(
product_key INT NOT NULL,
product_name VARCHAR(150),
quantity INT, order_method_en VARCHAR(90)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
__2。现在用连接多个表的数据的查询的结果填充新创建的表。
USE MYBIGSQL;
INSERT INTO sales_report
SELECT sales.product_key, pnumb.product_name, sales.quantity, meth.order_method_en
FROM sls_sales_fact sales, sls_product_dim prod, sls_product_lookup pnumb, sls_order_method_dim meth WHERE pnumb.product_language=‘EN’
AND sales.product_key=prod.product_key AND prod.product_number=pnumb.product_number AND meth.order_method_key=sales.order_method_key AND sales.quantity > 1000;
__3。通过执行以下查询来验证前一个查询是否成功:
– total number of rows should be 14441
select count(*) from mybigsql.sales_report;
还有另一种类型的加载操作,那就是CREATE TABLE…(cta)声明。您将从现有的表创建一个表。
__4。从sales_report创建一个名为sales_report_modified的新表。输入
use MYBIGSQL;
CREATE HADOOP TABLE sales_report_modified as select product_key, product_name, quantity
from sales_report
where order_method_en = ‘E-mail’;
__5。验证结果。输入:
select * from mybigsql.sales_report_modified;
__6。现在让我们添加一些数据,这是一个拼花文件格式。创建一个新表
use MYBIGSQL;
CREATE HADOOP TABLE IF NOT EXISTS big_sales_parquet
( product_key INT NOT NULL,
product_name VARCHAR(150),
quantity INT,
order_method_en VARCHAR(90)
)
STORED AS parquetfile;
除了最后一行之外,您现在应该对所有查询都很熟悉了。最后一行告诉Big SQL将文件存储为拼花格式。
__7。使用基于查询结果的数据填充此表。注意,这个查询使用TEXTFILE格式连接前面用Big SQL定义的4个表中的数据。Big SQL将自动将该查询的结果集重新格式化为用于存储的拼花格式。
use MYBIGSQL;
insert into big_sales_parquet
SELECT sales.product_key, pnumb.product_name, sales.quantity, meth.order_method_en
FROM sls_sales_fact sales, sls_product_dim prod, sls_product_lookup pnumb, sls_order_method_dim meth WHERE pnumb.product_language=‘EN’ AND sales.product_key=prod.product_key AND prod.product_number=pnumb.product_number AND meth.order_method_key=sales.order_method_key and sales.quantity > 5500;
__8。检查结果,发现返回了471条记录:
select * from mybigsql.big_sales_parquet;
__9。我们还没有看到这些文件实际上是如何存储在文件系统中的。启动BigInsights web控制台。
__10。使用用户名:bigsql和密码bigsql登录。
__11。单击Files选项卡
__12。深入到biginsights——>hive——>warehouse——>mybigsq .db
__13。展开big_sales_parquet表并单击其中的数据文件。您将看到该文件是不可读的。
__14。或者,单击其他任何表,如go_region_dim,以查看其内容。您应该能够实际读取文件中的内容。
1.6处理分区表
现在让我们进入分区表。如您所知,如果对谓词中常用的列执行分区,那么分区表将允许查询更快地执行查询。查询将只搜索它需要的分区,因此在数据集很大时节省了大量时间。在我们的销售报告示例中,我们有一个order方法列。此列可用于搜索特定的排序方法,如电子邮件。
__ 1。创建一个分区表sales_report_part。复制并粘贴到 aFirstFile.sql中。Eclipse中的sql脚本:
use MYBIGSQL;
CREATE HADOOP TABLE IF NOT EXISTS sales_report_part
(
product_key INT NOT NULL,
product_name VARCHAR(150),
quantity INT
) partitioned by (order_method_en VARCHAR(90))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
除了partition BY子句之外,这里的所有内容看起来都很熟悉。您可以像往常一样定义所有的列,除了您希望按其进行分区的列之外——您可以将该列包含在partition by子句中。
__ 2。将原始sales_report表中的数据加载到这个新分区表中。输入:
use MYBIGSQL;
insert into sales_report_part
select product_key, product_name, quantity, order_method_en from sales_report;
__ 3。通过在BigInsights控制台中转到Files选项卡来检查结果。在看到新的结果之前,您可能需要进行刷新。
__ 4。深入到该目录下的sales_report_part表(biginsights->hive->warehouse->mybigsq .db),您可以看到每个分区被划分成各自的文件夹,并使用列名=列值进行标记。(order_method_en =E-mail)。
__ 5。展开每个分区以查看其中存储的数据文件。
完成这个练习后,您现在应该能够
—创建大型SQL模式和表
—将数据加载到大型SQL表中
—在大型SQL表和视图中查询数据
—使用额外的加载操作
—处理分区表
8.Hbase 1
Using HBase for Real-time Access to your BigData
Getting started with HBase
开始使用HBASE
1.1开始
1.2探索HBASE(终端)
1.2.1使用命令行接口
1.3探索HBASE使用IBM BIGINSIGHTS…
1.3.1使用WEB控制
1.3.2使用BIGINSIGHTS还命令
1.4总结
从HBase开始
您将使用IBM的BigInsights安装,它是与Apache HBase打包的。
完成这个动手实验后,你将能够:
•使用基本的HBase命令来探索HBase系统。
•使用BigInsights探索HBase系统。
用45分钟到1小时完成这部分实验。
注意:这个版本的实验室是使用InfoSphere BigInsights 2.1 Quick Start Edition使用RedHat设计的。如果您使用的是Suse lab图像,那么在整个实验室中将会有一些列在t上的差异。它将在每一节中提出。
在整个实验过程中,您将使用以下帐户登录信息:
1.1开始
为准备本实验室的内容,您必须经历HBase启动的过程。
__1。启动VMware映像时,如果VMware Player中尚未打开,则单击Play virtual machine按钮。
__2。使用以下凭证登录VMware虚拟机。用户:biadmin密码:biadmin
__3。登录之后,您的屏幕应该与下面的屏幕类似。
在开始使用HBase之前,您需要先启动它。有两种方法可以做到这一点,通过终端和简单的双击图标。这两个方法将在以下步骤中显示。
__4。现在双击BigInsights Shell图标打开终端。
__5。单击终端图标
__6。打开终端后,更改为$BIGINSIGHTS_HOME/bin目录(默认为/opt/ibm/biginsights)
cd $BIGINSIGHTS_HOME/bin
或者cd /opt/ibm/biginsights/bin
__7。就从这里开始吧。请注意,它们需要几分钟的时间来运行
./start-all.sh
__8。或者,您可以使用start.sh和stop.sh分别启动和停止组件。例如,要启动和停止HBase使用:./start.sh HBase
./start.sh hbase
./stop.sh hbase
注意,由于HBase已经启动,终端告诉我们HBase已经在运行。
__9。一旦所有组件都成功启动,您就可以继续前进了。
__10。如果您想停止所有组件,请执行下面的命令。然而,对于这个实验室,请让所有的组件都启动
./stop-all.sh
接下来,让我们看看如何通过双击一个图标来启动所有的组件。
__11。双击Start BigInsights图标将执行执行上述步骤的脚本。一旦所有的组件都启动了,终端出口就设置好了。
__12。您可以以类似的方式停止组件,双击stop Biginsights图标。(Start BigInsights图标右侧)
现在已经启动了组件,可以继续下一节了。
1.2探索HBase (Terminal)
HBase自带HBase Shell,它是在JRuby (http://jruby.org)的基础上构建的,带有额外的HBase命令。使用JRuby shell可以做的几乎所有事情,您都应该能够在HBase shell中完成。JRuby支持put、get、delete和scan命令以及其他管理任务。
键入help,然后在shell中按return查看所有可用的命令。
1.2.1使用命令行接口
确保HBase已经启动,并从与以前相同的终端窗口(以biadmin的身份登录)按照以下指令
__1进行操作。如果您使用的是同一个终端,请清除该终端以获得一个干净的空间:
clear
__2。如果您还没有找到BigInsights主目录,可以导航到它。
cd $ BIGINSIGHTS_HOME
__3。切换到HBase bin目录:
cd hbase/bin/
__4。启动HBase Shell:
./hbase shell
__5。查看shell的帮助手册:
help
花一分钟左右的时间浏览一下帮助,看看有什么可以帮助您。注意,表、行、列系列的名称都是用引号括起来的。我们不会在这里讨论太多细节,但是要知道,如果您不确定命令的语法,可以使用它。
__6。让我们继续并创建我们的第一个表:
create ‘myFirstTable’ , ‘myColumnFamily’
__7。通过执行:list验证表的创建
list
__8。现在让我们在表中添加一些值。在执行每个语句之后单击return。
第10页
put ‘myFirstTable’, ‘row1’, ‘myColumnFamily:columnA’, ‘value1’
put ‘myFirstTable’, ‘row2’, ‘myColumnFamily:columnB’, ‘value2’
put ‘myFirstTable’, ‘row3’, ‘myColumnFamily:columnC’, ‘value3’
您刚刚向表中添加了3个值,每次一个。插入’ row1 ‘,列’ myColumnFamily:columnA ‘的值为’ value1 ‘。另外两个插入添加了’ row2 ', ’ myColumnFamily:columnB ‘值为’ value2 ‘和’ row3 ', ’ myColumnFamily:columnC ‘值为’ value3 ‘的每个列都需要一个列族,在我们的例子中,我们添加的所有3个列都是’ myColumnFamily '。
回想一下,在定义表时,我们不需要预先声明任何列——这使模式变得灵活,因为我们可以根据需要添加列。
这里需要记住的重要一点是,虽然有些练习可能会使用长而易读的列族和列名,如myColumnFamily或columnA,但不建议在实际的HBase环境中使用这种方法。名称存储在系统上数据文件的每个实例中。把它乘以成千上万,甚至更多的列,你会浪费很多资源。首选的方法是使用简短的缩写。
__9。让我们对表进行扫描以查看insert的结果:
scan ‘myFirstTable’
您可以看到,我们的行已成功添加到表中。
__10。获取一行:
get ‘myFirstTable’, ‘row2’
__11。通过执行以下命令来清理您所做的工作:
disable ‘myFirstTable’
drop ‘myFirstTable’
您现在已经完成了终端部分,可以关闭终端了。
1.3使用IBM BigInsights探索HBase
在本节中,您将看到可以使用IBM BigInsights管理HBase和执行其他与HBase相关的任务。
1.3.1使用Web控制台
__1。双击BigInsights WebConsole图标启动Web控制台。
__2。验证您的Web控制台是否与此类似,并注意每个部分:
注意:如果您使用的是Suse映像,并且BigInsights安装了安全性,那么将提示您输入用户id和密码。使用实验室开头列出的id/pw。
__3。要使用BigInsights控制台启动和停止HBase,请进入Tasks部分,单击视图、启动或停止服务:
注意:在Suse映像上,单击Cluster Status选项卡启动和停止HBase服务。
__4。在下面的屏幕上,单击HBase节点,您将看到启动或停止HBase的选项。在我们的例子中,HBase已经启动,因此您只能停止它。
__5。如果您进一步向下滚动窗口,您将看到启动或停止HBase主服务器或区域服务器的选项。
__6。单击Dashboard 选项卡进入仪表板页面。
__7。现在我们将创建自己的仪表板。单击 New Dashboard 图标
__8。在弹出的对话框中,为仪表板命名:HBase并单击OK。
__9。一旦创建了HBase仪表板,就需要添加一些小部件。点击tab图标添加小部件:
或者,您也可以单击屏幕最右边的Add Widget按钮。
注意:在Suse环境下,您只能访问最右边的Add Widget按钮。
__10。小部件选择屏幕将提供要添加的小部件列表。在搜索框中键入关键字区域以筛选小部件。您还可以通过滚动选择查看哪些内容是可用的。
添加您希望看到数据的任何小部件。注意,此时您将没有任何数据。这个练习的目的是向您展示一些可用的小部件。继续并退出小部件选择屏幕。典型的仪表盘是这样的:
1.3.2Using BigInsights Commands
在本节中,您将看到一些可以从BigInsights中使用的命令。正如您在Web控制台中看到的,可以启动和停止各种组件,包括HBase。在本练习的第一部分中,您已经在终端中看到了这个命令。
./start-all.sh
./stop-all.sh
To start an individual component, use:
./start.sh component
where component = hbase in our case
__11。让我们看看检查健康组件的命令。继续,打开一个终端,就像你在练习的第一部分所做的那样,输入以下内容:
cd $BIGINSIGHTS_HOME/bin ./healthcheck.sh hbase
同样,您可以使用./healthcheck.sh all检查所有组件的健康状况
__12。接下来,让我们看看组件的状态。在终端中查看HBase类型的状态:
./status.sh hbase
同样,您也可以使用它来获取所有组件的状态:
./status.sh all
__13。下一种命令类型用于同步集群配置的组件配置。因为我们在这个练习中只运行一个节点,所以我们不会运行这个命令,而只是展示它是如何工作的
./syncconf.sh component where component is one of the components of Hadoop such as HBase.
运行HBase命令将同步整个文件:
$BIGINSIGHTS_HOME/hdm/components/hbase/conf/install-info.properties
__14。您可以恢复一个或多个组件的状态(基于备份文件中可用的信息)。使用这个命令:
./rollbackUpgrade.sh component where component is one of the components of Hadoop such as HBase.
__15。BigInsights提供了两个命令来备份和恢复HBase数据。
hbase backup
hbase restore
进入hbase/bin目录,键入这两个命令之一,以获取关于该目录的附加信息。要进入hbase目录,输入:
cd $BIGINSIGHTS_HOME/hbase/bin ./hbase backup
__16。我们要介绍的最后一项是HBase状态页。打开web浏览器并访问此URL以查看状态页面:http://localhost:60010/master-status
您可以在这个页面上看到HBase系统的各种设置和状态。您还将看到HBase正在运行的任何任务。花几分钟浏览一下这个页面,寻找熟悉的感觉。
当您在实验室中工作时,应该记住一个有用的提示:如果您认为HBase命令没有按照预期工作,那么您的HBase服务器可能已经关闭。再次访问此页面以快速检查状态。如果您得到一个页面未找到错误,这意味着服务器宕机,因此您需要重新启动它。
1.4总结
恭喜你!现在您已经熟悉了如何使用HBase shell读写数据,以及如何为某些管理任务使用Web控制台。您还可以使用一些工具从终端正确地管理HBase。在剩下的实验练习中,如果您想直接访问各种Shell,可以使用BigInsights Shell目录。你可以从桌面访问:
您可以使用各种shell,包括终端。
9.Hbase 2
Using HBase for Real-time Access to your BigData
Using other clients to communicate with HBase
使用其他客户与HBASE通信
4.1使用REST API应用程序管理
4.2使用BIGINSIGHTS部署和运行一个应用程序
4.3 HBASE表映射到蜂巢和执行HIVEQL数据
4.4总结
在这个实验室中使用其他客户机与HBase通信
您将执行部署和运行示例HBase应用程序所需的步骤。您将看到如何使用BigInsights来运行您的应用程序。这个示例应用程序带有BigInsights,您将使用前面导入的sales_fact表中的数据作为该应用程序的数据集。然后您将看到如何使用Hive链接到现有的HBase表,以便对其运行HiveQL。
完成这个动手实验后,你将能够:
•通过REST API访问BigInsights上可用的应用程序
•了解如何使用REST API部署和运行应用程序
•使用BigInsights部署和运行应用程序
•映射一个现有HBase表来对其进行Hive和运行HiveQL查询。
允许45分钟到60分钟来完成这部分实验。这个版本的实验是使用InfoSphere BigInsights 2.1 Quick Start版本设计的。在整个实验过程中,您将使用以下帐户登录信息:
4.1使用REST API进行应用程序管理
REST API允许您管理HBase应用程序。
注意:如果您正在使用Suse lab映像,那么您需要首先进行身份验证,以便启动和使用rest服务。
__1。您需要首先启动REST服务器。打开终端并导航到HBase/bin目录:
cd $BIGINSIGHTS_HOME/hbase/bin
__2。在终端输入命令启动REST服务器:
注意:如果您正在使用Suse lab映像:在启动REST服务器之前,输入以下命令以使用root。
su -
密码是“password”。
./hbase-daemon.sh start rest
注意:如果您正在使用Suse lab映像,那么在启动查询之前,请使用以下命令获取令牌:
curl -X POST -d “j_username=biadmin&j_password=biadmin&submit=login” --dumpheader headers http://localhost:8080/j_security_check --verbose
__3。要使用REST服务器,您需要使用CURL命令传入各种url。让我们从一个简单的例子开始,看看BigInsights实例:
注意:如果您正在使用Suse lab映像,那么在接下来的步骤中,使用以下命令代替
curl -X GET -L -b header http://localhost:8080/use
localhost而不是bivm作为主机
curl http://bivm:8080 /
__4。使用这个URL执行可以获得版本:
curl http://bivm:8080/data/controller/configuration/getVersion
__5。现在让我们获得可用应用程序的列表。使用这个命令:
curl http://bivm:8080/data/controller/catalog/applications
这是列的元数据。
下面是实际的列及其值:
这些都是BigInsights服务器上可用的应用程序。您可以看到所有这些应用程序目前都没有部署,正如每个应用程序的status列(最后一列)所描述的那样。
__6。您需要仔细研究的应用程序是HBase应用程序。滚动到HBase应用程序以查看其信息(应用程序名称按字母顺序排序)。
请注意第一列中的应用程序id。这是您将需要用来引用应用程序的ID。在您的特定实例中,id可能不同,因此您需要注意HBase应用程序的id。
f3a457d5-11a1-4a23-bcad-db152d5db981
__7。让我们更详细地看看这个应用程序:输入以下命令:
curl http://bivm:8080/data/controller/catalog/applications/f3a457d5-11a1-4a23-bcaddb152d5db981
因此,只需要两个参数:tableName和outputDir。其他选项是可选的,可以帮助减少加载到应用程序中的数据量。
要部署应用程序,您可以使用:
http://host:port/data/controller/ApplicationManagement?actiontype=deploy_appl ication&applicationid=;
要运行应用程序,您可以使用:
http://host:port/data/controller/ApplicationManagement?actiontype=run_applica tion&runconfig=;
当然,每次都需要输入较长的app_id,因为这些是示例应用程序。如果你有自己的应用,你可以给它一个更容易记住的id。
出于我们的目的,我们不会让您输入这些内容,而是使用BigInsights来完成这项工作。
对于实验的其他部分,我们将使用BigInsights来帮助我们进行应用程序管理(因此我们不需要每次都输入app_id)
4.2使用BigInsights部署和运行应用程序
在上一节中,您了解了如何使用REST API与HBase通信来进行一些应用程序管理。在本节中,我们将使用BigInsights做同样的事情。
__8。启动BigInsights Web控制台
__9。单击“应用程序”选项卡后面的“管理”链接:
__10。向下滚动应用程序列表以查找HBase,或者使用左侧面板上的类别来查找HBase。去使用 categories, 导航 Export HBase
__11。确保选择了应用程序,并单击Deploy按钮来部署HBase应用程序(使用REST API命令可以完成相同的任务,但是需要大量的输入)。
__12。在此屏幕上再次单击Deploy按钮以部署应用程序。
__13。部署应用程序后,您将返回到manage application屏幕。单击Run查看可以运行的应用程序列表:
__14。现在单击HBase应用程序,可以指定参数:
__15。请记住,您在REST API中看到了运行此应用程序所需的参数。现在继续填充这些参数:
Table name: sales_fact
Output directory: /user/biadmin/exercise4/output
__16。使用执行的默认名称。单击“运行”:
__17。一旦开始运行,您将看到它的进展如下:
__18。当它完成时,你会看到这个。
__19。单击Details列中的按钮,查看运行的详细信息:
__20。单击作业详细信息列中的按钮,然后单击第一行以查看底部作业的下钻。您可以看到这个应用程序的映射作业已经完成。这个特殊的工作没有减速器任务。
__21。现在您将看到运行的输出。回到应用程序选项卡,在输出列下面,单击按钮:
__22。在“文件”页上单击“结果”。查看sales_fact表导出为json:
__23。通过停止REST服务器来结束本节:
./hbase-daemon.sh stop rest
4.3将HBase表映射到Hive并对数据执行HiveQL。
在练习的这一部分中,您将了解如何从当前存储在HBase中的数据创建Hive表。此外,您还可以使用映射到HBase的Hive中的数据。这个实验锻炼将覆盖将HBase表蜂巢。
__24。要使用Hive,你首先需要进入蜂巢。打开终端并输入以下命令进入shell。
cd $BIGINSIGHTS_HOME/hive/bin ./hive shell
或者,您可以从BigInsights Shell下的桌面图标启动Hive Shell
__25。一旦进入Hive Shell,您将输入命令来将sales_fact表链接到您将要创建的Hive表。这样做将允许您对HBase中的数据执行HiveQL。
输入以下命令:
CREATE EXTERNAL TABLE hbase_sales_fact (key int, product_key string, quantity int, price string) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key,cf:pdk,cf:q,cf:up”) TBLPROPERTIES(“hbase.table.name” = “sales_fact”);
您将看到有多个绑定,但是我们可以忽略这个错误。它不会影响我们的实验练习;只是找到了多个绑定。
__26。现在您已经成功地使用EXTERNAL关键字创建了一个存储处理程序,您可以对从HBase映射过来的数据集运行HiveQL。没有使用该命令映射的列不能通过Hive访问。在您使用的命令中,您只映射行键、产品键、数量和单价列。让我们对它运行一些查询。
select * from hbase_sales_fact;
运行该命令将返回预期的结果;四列:行键(主键)、product_key、quantity列和单价列。
__27。现在让我们运行另一个作业,它将调用Hadoop的MapReduce功能。
select count(*) from hbase_sales_fact;
这一运行将花费一些时间,但您最终将看到440行,即从文本文件导入的确切数字。
__28。让我们运行另一个来获取数据中特定product_key的计数。
select count(product_key) from hbase_sales_fact where product_key = 30256;
product_key 30256出现的次数是15次,可以从MapReduce 中看到
__29。你已经做完这个实验练习了。继续关闭任何打开的窗口。
4.4小结
进展顺利!在本练习中,您已经了解了如何使用REST API来管理加载到BigInsights中的应用程序。由于我们使用的是示例应用程序,因此在这里使用REST API需要大量的输入。好在我们有很好的见解来帮助我们进行应用程序管理。您使用sales_fact表作为输入部署并运行了一个示例HBase应用程序,并将数据导出到JSON文件中。
在第二部分中,您看到了Hive是如何与HBase一起使用的。这是有用的,当你需要使用HiveQL为一个特定的数据集。性能还可以增强如果你有一个蜂巢稀疏数据集,您可以创建多个表查询,这样你可以对这些表,而不是使用扫描得到的一切,然后过滤出来。您还看到,通过创建链接到现有HBase表的外部表,Hive表的删除不会影响HBase表。