在分布式文件系统(HDFS和GPFS)中处理大量数据

利用 Big SQL 支持的数据类型,可以更容易地表示和处理半结构化数据类型。使用本文中包含的代码样例和查询,了解如何使用 Big SQL 的简单和嵌套式复杂数据类型,以及如何在应用程序中创建和实现这些类型。作为一个新增的争议点,了解如何使用 Serializer Deserializer (SerDe) 处理 JSON 数据。

用于 InfoSphere BigInsights、Big SQL 的全新 SQL 界面使得用户可以对 HDFS 和 Apache HBase 中存储的数据进行 SQL 访问。它还可以跨分布式环境提供创建和填充表的能力,并通过执行 SQL 查询从分布式数据中提取信息。Big SQL 支持许多数据类型。

原始数据类型:

Tinyint Smallint Int 或 Integer Bigint Float 或 Real Double Decimal(precision, scale) 或 Numeric(precision, scale) String Varchar(length) 或 Char(length) Boolean Timestamp Binary(length)

复杂数据类型:

array struct

Big SQL 扩展数据类型

除了原始和复杂数据类型外,Big SQL 还支持扩展数据类型,这种类型不适合 Apache Hive。以下各节将介绍这些扩展数据类型。

十进制或数值数据类型

这种数据类型可用于具有精度和范围的十进制值。缩短数据文件中存储的值,使之适合指定的精度和范围。在 Apache Hive 中,通常使用string 数据类型保存这些值。在需要限制精度和范围时,可使用 decimal/numeric 数据类型进行替代。

语法:decimal(precision, scale)

以下示例展示了类型 decimal(10,4) DISCOUNT 一栏,其中 10 和 4 分别是精度和范围。

创建十进制数据类型的表格

[localhost][biadmin] 1> create table PRODUCT (PROD_ID int, DISCOUNT decimal(10,4))[localhost][biadmin] 2> row format delimited[localhost][biadmin] 3> fields terminated by ',';0 rows affected (total: 0.20s)

实际数据类型

real 数据类型与 float 数据类型相同,可用于单精度的浮点值。其行为也与 float 数据类型相同。

语法:real

创建实际数据类型的表格

[localhost][biadmin] 1> create table PRODUCT(PROD_ID int, DISCOUNT real)[localhost][biadmin] 2> row format delimited[localhost][biadmin] 3> fields terminated by ',';0 rows affected (total: 0.26s)

varchar/char 数据类型

这种数据类型适用于可变长度的字符串。缩短数据文件中存储的值,使之适合指定的长度。在 Apache Hive 中,可将这些值视为 string 类型值。在需要限制内容长度时,可使用 varchar/char 数据类型进行替代,因为该数据类型可以指定列中各值的大小限制。

语法:varchar(length) 或 char(length)

创建 varchar 数据类型的表格

[localhost][biadmin] 1> create table product(prod_id int, prod_name varchar(15))[localhost][biadmin] 2> row format delimited[localhost][biadmin] 3> fields terminated by ',';0 rows affected (total: 0.12s)

Big SQL 复杂数据类型

Big SQL 支持复杂数据类型 array 和 struct。这些类型可用于表示具有复杂结构的数据。虽然这些数据类型并没有在 InfoSphere BigInsights 2.1 信息中心中记录,但我还是要在这里介绍一下,以提供有关 Big SQL 支持的复杂数据类型的洞察。

array 数据类型用于定义同类物体的数据结构。Big SQL array 数据类型可在简单格式和嵌套格式中使用。array 类型列中的元素可使用索引 —phone[1] 进行访问,
例如,每个 SQL 标准从 1 开始。 struct 是数据类型 Big SQL 的一种内置数据类型,它包含一系列的属性,每个属性都可以是原始、复杂或嵌套数据类型。自 InfoSphere BigInsights 2.1 起,Big SQL 支持使用数据类型 struct 作为表格中的列类型,或是作为 array 列的子类型。struct 类型列中的元素可以使用圆点 (.) 符号进行访问,例如 address.city。

了解 Big SQL 的复杂数据类型

现在来看一个具体的示例,更详细地了解 Big SQL 复杂数据类型。要想使用 Big SQL,需要配置并启动 Big SQL 服务器,这是 InfoSphere BigInsights 的一个组件。请访问 InfoSphere BigInsights 2.1 信息中心,了解有关安装和配置 Big SQL 的详细信息。在完成安装和配置之后,就可以使用 $BIGSQL_HOME/bin 目录中的实用程序 bigsql 来启动 Big SQL。

启动 Big SQL 服务器

[email protected]:~> cd $BIGSQL_HOME/[email protected]:/opt/ibm/biginsights/bigsql/bin> ./bigsql startBigSQL running, pid 18598.

使用命令行客户端工具 JSqsh 连接到 Big SQL 服务器,该工具可安装在服务器上。JSqsh 是一个通用的 JDBC 客户端工具,可用于使用 JDBC 驱动程序的任何数据源。脚本 jsqsh 位于 $BIGSQL_HOME/bin 目录中。

使用 JDBC 客户端工具 jsqsh 连接到 Big SQL 服务器

[email protected]:/opt/ibm/biginsights/bigsql/bin> ./jsqsh -Ubiadmin -Ppassw0rd -dbigsqlCurrent schema context is 'default'JSqsh Release 1.5-ibm, Copyright (C) 2007-2013, Scott C. GrayType \help for available help topics. Using JLine.[localhost][biadmin] 1>

包含复杂数据类型列的表格

例如,想象一下使用在线门户网站 www.xyzshopping.com 的购物车的情形。创建一个名为 SHOPPING 数据库,其中包含两个表格:CUSTOMER_DETAILS 和 ORDER_DETAILS,前者包含具有该门户帐户的客户详细信息,后者包含客户订单信息。参照表 1 和 表 2,了解这些表格的结构。

表 1. 表 CUSTOMER_DETAILS 的结构

列名称 列数据类型 CUSTOMER_ID varchar(15) FIRST_NAME varchar(15) LAST_NAME varchar(20) ADDRESS struct<LINE1:varchar(15), LINE2: varchar(15), POSTAL_CODE:integer, CITY: varchar(20), STATE: varchar(20), COUNTRY: varchar (20), EMAILID: varchar(25)> CONTACT_NUMBER array<integer>

Big SQL 还支持 array 和 struct 数据类型的嵌套。表 ORDER_DETAILS 包含五个列,列 ITEMS 是嵌套列。该列包含一个嵌套在 array 数据类型中的 struct 数据类型。

表 2. 表 ORDER_DETAILS 的结构

列名称 列数据类型 ORDER_ID varchar(15) SHIPPING_ADDRESS struct<LINE1: varchar (15), LINE2: varchar (15), POSTAL_CODE: integer, CITY: varchar (20), STATE: varchar (20), COUNTRY: varchar (20), EMAILID: varchar (25), CONTACT_NUMBER: integer> ITEMS array<struct<ITEM_ID: varchar(20), QUANTITY:integer, PRICE:integer>> ORDER_DATE timestamp CUSTOMER_ID varchar(15)

时间: 2014-12-19

在分布式文件系统(HDFS和GPFS)中处理大量数据的相关文章

Hadoop分布式文件系统HDFS的工作原理详述

Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用.要理解HDFS的内部工作原理,首先要理解什么是分布式文件系统. 1.分布式文件系统 多台计算机联网协同工作(有时也称为一个集群)就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统. 分布式文件系统是分布式系统的一个子集,它们解决的问题就是数据存储.换句话说,它们是横跨在多台计算机上的存

Java访问Hadoop分布式文件系统HDFS的配置说明_java

配置文件 m103替换为hdfs服务地址. 要利用Java客户端来存取HDFS上的文件,不得不说的是配置文件hadoop-0.20.2/conf/core-site.xml了,最初我就是在这里吃了大亏,所以我死活连不上HDFS,文件无法创建.读取. <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <co

Hadoop白皮书(1):分布式文件系统HDFS简介

Hadoop 分布式文件系统 (HDFS) 是运行在通用硬件上的分布式文件系统.HDFS 提供了一个高度容错性和高吞吐量的海量数据存储解决方案.HDFS 已经在各种大型在线服务和大型存储系统中得到广泛应用,已经成为各大网站等在线服务公司的海量存储事实标准,多年来为网站客户提供了可靠高效的服务. 随着信息系统的快速发展,海量的信息需要可靠存储的同时,还能被大量的使用者快速地访问.传统的存储方案已经从构架上越来越难以适应近几年来的信息系统业务的飞速发展,成为了业务发展的瓶颈和障碍. HDFS 通过一

性能-分布式文件系统hdfs 有iops和tps这两种指标的测试吗?

问题描述 分布式文件系统hdfs 有iops和tps这两种指标的测试吗? 分布式文件系统hdfs 有iops和tps这两种指标的测试吗? 还有淘宝分布式文件系统,有iops的测试指标不?谢谢大神们

分布式文件系统HDFS设计

<Hadoop 权威指南>上用这么一句话来描述HDFS: HDFS is a filesystem designed for storing very large files with streaming data access patterns, running on clusters of commodity hardware. 有几个关键性的词组:Very large files,Streaming data access,以及Commodity hardware.解下来一个一个解释.

分布式文件系统HDFS体系

系列文件列表: http://os.51cto.com/art/201306/399379.htm 1.介绍 hadoop文件系统(HDFS)是一个运行在普通的硬件之上的分布式文件系统,它和现有的分布式文件系统有着很多的相似性,然而和其他的分布式文件系统的区别也是很明显的,HDFS是高容错性的,可以部署在低成本的硬件之上,HDFS提供高吞吐量地对应用程序数据访问,它适合大数据集的应用程序,HDFS放开一些POSIX的需求去实现流式地访问文件数据,HDFS开始是为开源的apache项目nutch的

【官方文档】Hadoop分布式文件系统:架构和设计

http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html   引言 前提和设计目标 硬件错误 流式数据访问 大规模数据集 简单的一致性模型 "移动计算比移动数据更划算" 异构软硬件平台间的可移植性 Namenode 和 Datanode 文件系统的名字空间 (namespace) 数据复制 副本存放: 最最开始的一步 副本选择 安全模式 文件系统元数据的持久化 通讯协议 健壮性 磁盘数据错误,心跳检测和重新复制 集群均衡 数据完整

Hadoop分布式文件系统:结构与设计

1. 介绍 Hadoop 分布式文件系统 (HDFS)是一个设计为用在普通硬件设备上的分布式文件系统.它与现有的分布式文件系统有很多近似的地方,但又和这些文件系统有很明显的不同.HDFS 是高容错的,设计为部署在廉价硬件上的.HDFS对应用程序的数据提供高吞吐量,而且适用于那些大数据集应用程序.HDFS开放了一些POSIX的必须接口,容许流式访问文件系统的数据.HDFS最初是为了Apache 的Nutch网络搜索引擎项目的下层构件而设计的.是Hadoop项目的一部分,而这又是Apache的 Lu

Hadoop (HDFS)分布式文件系统基本操作

Hadoop HDFS提供了一组命令集来操作文件,它既可以操作Hadoop分布式文件系统,也可以操作本地文件系统.但是要加上theme(Hadoop文件系统用hdfs://,本地文件系统用file://) 1. 添加文件,目录 HDFS文件系统(需要加hdfs://): 因为我们在core-site.xml中配置了fs.default.name 所以所有和HDFS打交道的命令都不需要加上前缀hdfs://192.168.129.35:9000 比如我们要在Hadoop 文件系统中创建一个目录叫