FreeRCH大数据一体化平台开发框架_第1页
FreeRCH大数据一体化平台开发框架_第2页
FreeRCH大数据一体化平台开发框架_第3页
FreeRCH大数据一体化平台开发框架_第4页
FreeRCH大数据一体化平台开发框架_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FreeRCH大数据一体化平台

目录

第一章大快大数据一体化开发框架概述...............................4

1.1什么是大数据................................................4

L2开发大数据需要什么技术......................................5

1.3Hadoop的由来...............................................5

1.4什么是大数据一体化开发框架..................................6

L5框架的构成模块..............................................6

1.6大快大数据平台..............................................7

L7大数据相对于传统数据处理方式的优势与不同...................11

1.8大数据相对传统关系型数据库的不足...........................11

1.9组件集成情况列表..........................................12

第二章数据源与SQL引擎..........................................16

2.1关系型数据库(SQL数据库)与大数据平台之间的数据导入导出....16

2.2本地文件与大数据平台之间导入导出..........................19

2.3SQL引擎..................................................22

3.1创建用户..................................................27

3.2修改用户密码..............................................28

3.3获得用户ID(corlD).......................................28

3,4创建任务...................................................29

3.5获得任务ID(taskID)......................................31

3.6启动任务...................................................32

3.7停止任务...................................................33

3.8删除任务...................................................33

3.9获得某任务采集数量.........................................34

3.10获得爬虫采集数据(json格式).............................34

3.11获得爬虫采集元素数据(json格式).........................35

3.12获得爬虫采集元素数据(txt格式)..........................36

第四章数据处理..................................................38

4.1数据清洗..................................................38

4.2数据统计..................................................43

4.3数据分析..................................................46

4.4数据分析场景中的算法应用..................................51

第五章搜索引擎..................................................53

5.1数据导入搜索引擎...........................................53

5.2搜索引擎导出到本地文件夹..................................56

5.3实时数据导入到搜索引擎及HIVE..............................58

5.4用户搜索..................................................61

第六章自然语言处理(NLP).......................................68

6.1基本处理..................................................68

6.2文本分类(相似性)处理....................................74

第七章机器学习算法库............................................78

7.1LR(逻辑回归)............................................78

7.2RandomForest(随机森林)...................................80

7.3SVM(支持向量机)...........................................82

7.4PCA(主成分分析)...........................................84

7.5K-means(K均值)............................................86

7.6GaussianMixtures(高斯混合模型)..........................88

7.7NaiveBayes(朴素贝叶斯)....................................89

7.8FP-growth(FP-growth).......................................91

7.9ALS(交替最小二乘法的协同过滤算法).........................93

第一章大快大数据一体化开发框架概述

众所周知,我们今天的大数据技术源自搜索引擎。人类进入21世纪后,随

着互联网的爆发,数据呈现出爆炸式的增长。谷歌的爬虫程序每天下载的网页超

过1亿个(2000年数据),这直接推动了海量数据处理技术的发展。

谷歌公司随之提出了大表、分布式文件系统和分布式计算的三大技术构架,

解决了海量数据处理的问题。谷歌公司随即将设计思路开源,发表了具有划时代

意义的三篇论文,很快,根据谷歌的设计思路的开源框架就出现了,这也是今天

大家熟知的HADOOP、MAPREDUCE和许多NOSQL系统。这三大技术也是整个大数据

技术的核心基础。

使用搜索引擎的技术,来处理海量数据,成为一种新的商业价值,我们将其

称之为大数据。因此,有人这样形容:从应用上来说,搜索引擎是一种大数据应

用,但是从技术上来说,大数据技术只是搜索引擎技术的一个子集,能做搜索引

擎的公司,一定能作大数据。但是,从事大数据技术的公司,却未必能作搜索引

擎。

1.1什么是大数据

进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发

展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底

有多少,描述数据系统的数据量的计量单位从MB(1MB大约等于一百万字节)、

GB(1024MB)、TB(1024GB),一直向上攀升,目前,PB(等于1024TB)级的数

据系统已经很常见,随着移动个人数据、社交网站、科学计算、证券交易、网站

日志、传感器网络数据量的不断加大,国内拥有的总数据量早已超出ZB

(1ZB=1O24EB,1EB=1O24PB)级别。

这些数据有两个特点,一个是“数据量大”,一个是“数据数量和种类全”。

可以用“大而全”来概括。所以说:大数据胜于好算法。对于许多应用来讲,采

用一个基于小数据量的好算法,结果的准确性往往不如一个基于大量可用数据一

般算法计算的结果。

传统的数据处理方法是:随着数据量的加大,不断更新硬件指标,采用更加

强大的CPU、更大容量的磁盘这样的措施,但现实是:数据量增大的速度远远超

出了单机计算和存储能力提升的速度。

而“大数据”的处理方法是:采用多机器、多节点的处理大量数据方法,而

采用这种新的处理方法,就需要有新的大数据系统来保证,系统需要处理多节点

间的通讯协调、数据分隔等一系列问题。

总之,采用多机器、多节点的方式,解决各节点的通讯协调、数据协调、计

算协调问题,处理海量数据的方式,就是“大数据”的思维。其特点是,随着数

据量的不断加大,可以增加机器数量,水平扩展,一个大数据系统,可以多达几

万台机器甚至更多。

1.2开发大数据需要什么技术

大数据技术,就是从各种类型的数据中快速获得有价值信息的技术。大数据

领域已经涌现出了大量新的技术,它们成为大数据采集、存储、处理和呈现的有

力武器。大数据处理关键技术一般包括:大数据采集、大数据预处理、大数据

存储及管理、大数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视

化、大数据应用、大数据安全等)。

1.3Hadoop的由来

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集

群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),

简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬

件上;而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些

有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)P0SIX的要

求,可以以流的形式访问(streamingaccess)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce0HDFS为海量的数据提

供了存储,则MapReduce为海量的数据提供了计算

Hadoop是一个能够对大量数据进行分布式处理的软件框架。Hadoop以一

种可靠、高效、可伸缩的方式进行数据处理。

Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工

作数据副本,确保能够针对失败的节点重新分布处理。

Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。

Hadoop还是可伸缩的,能够处理PB级数据。

止匕外,Hadoop依赖于社区服务,因此它的成本比较低,任何人都可以使用。

1.4什么是大数据一体化开发框架

大数据的应用开发过于偏向底层,具有学习难度大,涉及技术面广的问题,

这制约了大数据的普及。大快认为,需要一种技术,把大数据开发中一些通用的,

重复使用的基础代码、算法封装为类库,降低大数据的学习门槛,降低开发难度,

提高大数据项目的开发效率。

FreeRCH采用类黑箱框架模式,用户直接调用大快的相关类即可完成,过去

复杂的编码工作。大快的一体化框架,由六部分组成,即可单独部署,也可整体

部署,灵活方便。

大快的一体化开发框架,支持JAVA、PHP和.NET三种编程语言,本版为JAVA

描述。

1.5框架的构成模块

框架由:数据源与SQL引擎、数据采集(自定义爬虫)模块、数据处理模块、

机器学习算法、自然语言处理模块、搜索引擎模块,六部分组成。

大快的大数据通用计算平台(DKH),已经集成相同版本号的开发框架的全部

组件。如果在开源大数据框架上部署大快的开发框架,需要平台的组件支持如下:

数据源与SQL引擎:DK.Hadoop>spark>hive>sqoop>flume>kafka

数据采集:DK.hadoop

数据处理模块:DK.Hadoop>spark>storm>hive

机器学习和AI:DK.Hadoop>spark

NLP模块:上传服务器端JAR包,直接支持

搜索引擎模块:不独立发布

1.6大快大数据平台

大快大数据平台(DKH),是大快公司为了打通大数据生态系统与传统非大数

据公司之间的通道而设计的一站式搜索引擎级,大数据通用计算平台。传统公司

通过使用DKH,可以轻松的跨越大数据的技术鸿沟,实现搜索引擎级的大数据平

台性能。

•DKH,有效的集成了整个HADOOP生态系统的全部组件,并深度优化,重

新编译为一个完整的更高性能的大数据通用计算平台,实现了各部件的有

机协调。因此DKH相比开源的大数据平台,在计算性能上有了高达5倍(最

大)的性能提升。

•DKH,更是通过大快独有的中间件技术,将复杂的大数据集群配置简化至

三种节点(主节点、管理节点、计算节点),极大的简化了集群的管理运

维,增强了集群的高可用性、高可维护性、高稳定性。

•DKH,虽然进行了高度的整合,但是仍然保持了开源系统的全部优点,并

与开源系统100%兼容,基于开源平台开发的大数据应用,无需经过任何

改动,即可在DKH上高效运行,并且性能会有最高5倍的提升。

•DKH,更是集成了大快的大数据一体化开发框架(FreeRCH),FreeRCH

开发框架提供了大数据、搜索、自然语言处理和人工智能开发中常用的二

十多个类,通过总计一百余种方法,实现了10倍以上的开发效率的提升。

DKH的SQL版本,还提供了分布式MySQL的集成,传统的信息系统,可无

缝的实现面向大数据和分布式的跨越。

DKH标准平台技术构架图

计算层

数据交换层

DK.HADOOP数据源

MapRe

Mahout

duce

DK.数据中间件

DK.计算结构(SQL)

中间件敢抱

爬虫任务分配系就

WEB界面StormSpark

Mlllb

DK.一体化计算榷架

API接口文件,日志

数据

JDBC引攀=ODBC引茶DK.

HDFS压

应用程序DK.经典SQL引擎缩

■法/工具英即法

DK.HBASE实时流数据

界面系统NLP/AI系统

全文校索和索引数据中间件DK.Kafka

排序管理系统

检索层DK.E.S

V1.2

DK数据中间件

大快的数据中间件,是DKH数据交换层的核心,是大快的核心技术之一,

该中间件集成了apache的诸多组件,包含了从文件、SQL、日志、消息到爬虫

和流数据以及异构数据的支持;集成了大快的压缩算法,和数据同步分发技术,

实现了数据的导入和减少调动的同时实现,对于有实时数据要求的项目具有不可

替代的技术优势。

DK.Hadoop

是大快深度整合,重新编译后的HADOOP发行版,可单独发布。独立部署

FreeRCH(大快大数据一体化开发框架)时,必需的组件。DK.HADOOP整合集

成了NOSQL数据库,简化了文件系统与非关系数据库之间的编程;DK.HADOOP

改进了集群同步系统,使得HADOOP的数据处理更加高效。

DK.ES

大快的搜索系统,使用的是ES,支持完整的全文搜索。DK.ES是大快在开

源ES系统上经过二次开发,整合了对中文搜索的有效支持以及对大快数据同步

技术的支持后的高性能版本,DK.ES是DKH的核心组件之一,仅随DKH集成,

不单独发布。

DK计算中间件和SQL引擎

计算中间件和SQL引擎,提供了高效的大数据编程和传统SQL的查询支持,

该部分的功能体现,通过FreeRCH的部分类实现。

DK.NLP自然语言处理组件

大快是汉语言自然语言处理的技术引领者,大快的开源汉语言处理,是国内

目前使用率最高的开源自然语言处理开发包。DK.NLP是在大快开源产品的基础

上,进一步增强功能,简化编码的自然语言处理类库,随DK.NLP已经深度集

成,属于FreeRCH的组成部分,亦可独立发布。

智能问答机器人

大快的智能问答机器人,是DKH的AI组件之一,以类的形式调用和进行

二次开发。亦可独立发布。

机器学习算法类库

机器学习类库已随DKH深度集成,属于FreeRCH的组成部分,用户无需再

研究复杂的数学理论,有效减少编程难度和出错率。1.2版本的算法库包含以下

9种算法类:

逻辑回归、随机森林、支持向量机(还支持矢量网络)、主成分分析、K均

值、高斯混合(高斯概率密度函数)、朴素贝叶斯、FP-growth、交替最小二乘法

的协同过滤算法。

DKH分布式SQL版

VI.2S

DKH分布式SQL版

该版本在标准DKH的基础上,增加了分布式MYSQL的集成,其他与标准DKH

完全相同。DKH-SQL版的发布,使得很多需要强事务的系统,能够共享大数据的

技术成果,真正实现分布式系统对事务的完全支持,也帮助传统管理信息系统提

升效率和无缝移植。

版本:

DKH标准版DKH-分布式SQL版DK.HADOOP发行版

DKH标准版有三个不同的子版本:用于开发调试的单机版;支持三节点的学习版;

支持5节点以上的标准服务器版

DKH-分布式SQL版有两个子版本:学习版、服务器版

DKH的安装部署,参阅《DKH安装部署教程》

1.7大数据相对于传统数据处理方式的优势与不同

(1)相对于关系型数据库(SQL类型数据库)的优势

a.SQL数据库在处理大量数据时,需要花费大量时间在磁盘寻址上面,而硬

盘寻址速度的提升往往不及传输速率的提升。

b.大量的数据来源并非结构化数据,而SQL型数据库需要结构化的数据源。

c.大数据具有可伸缩性的编程模型,当数据量增大时,可以简单改变计算节

点数量来增速,使得数据量增大但总计算时间与以前一样,SQL系统不具备这个

简单扩容的能力。

(2)相对于网格计算的优势

网格计算也是多机器并行处理系统,依赖网络之间的通讯(消息)来相互协

调,比较适合于计算密集型(网络通讯较少)任务,一旦需要访问大量数据的时

候,由于网络带宽瓶颈问题,很多节点都在等待数据。

大数据的处理方式不同,它是将计算模块分配到各个节点上,从“本地”读

取数据,因而避免了大量的网络10。

另一个问题是容错,大数据系统的任务在某个节点上允许失败,由主控节点

重新启动,这一切都是系统自动完成的。

(3)与志愿计算不同

志愿计算是将一个大型任务分块,由志愿者自动加入,每个志愿者领取任务

模块,计算完成后在发回系统中心集成。

志愿计算是CPU密集型的,计算时间大大高于结果传递时间,计算需要几个

小时或者几天,而大数据系统是要求任务是在几分钟或几个小时就可以完成,任

务分布在一个内部高速网络的数据中心之内,机器之间是可靠的、定制的硬件。

1.8大数据相对传统关系型数据库的不足

1.不提供对SQL的支持:如果不支持SQL这样的工业标准,将会对用户产

生一定的学习和应用迁移成本;

2.支持的特性不够丰富:现有产品所提供的功能都比较有限,大多数NoSQL

数据库都不支持事务,也不像MSSQLServer和Oracle那样能提供各种附加功

能,比如BI和报表等;

3.现有产品的不够成熟:大多数产品都还处于初创期,和关系型数据库几

十年的完善不可同日而语;

1.9组件集成情况列表

DKH专有

DK数据中间件:基于多种算法的数据同步分配组件(系统内置)

DK增量计算:增量计算支持组件(系统内置)

爬虫任务分配系统:大快基于分布式文件系统的多用户、多机器、多线程爬虫任

务分配系统(系统内置)

DK.Crawler:大快基于机器学习的通用可自定义爬虫(FreeRCH框架内置)

FreeRCH框架:大快的一体化大数据开发框架

DK.NLP:大快的自然语言处理类库(FreeRCH框架内置,可独立部署)

DK.SQL引擎:大快开发的支持ODBC\JDBC数据源的组件(FreeRCH框架内置)

智能问答机器人:大快开发的AI组件(系统内置)

DK.计算中间件:大快旨在协调各个计算组件之间任务的基础组件(系统内置)

DK.索引中间件:为应对海量数据并发开发的内存缓冲数据中间件(系统内置)

DK.压缩算法:旨在提高数据传输效率的大快数据中间件内置的可执行代码(中

间件内置)

ElasticSQL:大快开发的高性能SQL引擎。

大快深度开发的开源产品

(除DK.MySQL以外,其它部件均与同名开源产品100%兼容)

DK.MySQL大快开发的分布式MySQL数据库系统可独立部署

说明:DK.MySQL是基于MySQL开发的分布式关系型数据库产品,由于引入了分

布式概念与标准的开源MySQL存在一定的差异,详情参阅《DK.MySQL说明书》

DK.Hadoop大快重新编译开发过的Hadoop平台可独立部署

DK.ES大快重新开发的ES,并增加了相关类库DKH内置

DK.HIVE大快深度开发的数据仓库HIVEDKH内置

DK.kafka大快深度开发的消息组件DKH内置

DK.HBASE大快深度开发的N0SQL数据库DKH内置

集成的开源组件

SqoopApache开源项目,用作大数据平台与数据库的数据管道,开源组件

FlumeFlume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持

在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对

数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Apache开源组件

Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不

断的流计算变得容易,Hadoop批处理所不能满足的实时要求。

Apache开源组件

Spark并行内存计算框架Apache开源组件

Mahout提供一些可扩展的机器学习领域经典算法的实现开源组件

Pig是一个面向过程的,Hadoop衍生编程语言,它简化了Hadoop

MapReduce的编程工作开源框架

其他基础组件如zookeeper等基础运行组件。

GraphX基于spark的图计算引擎(说明:运行图计算必须128G内存)。

本章阅读:

Hadoop:Hadoop是一•个由Apache基金会所开发的分布式系统基础架构。用

户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威

力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop

DistributedFileSystem),简称HDFS。HDFS有高容错性的特点,并且设计用

来部署在低廉的硬件上;而且它提供高吞吐量(highthroughput)来访问应用

程序的数据,适合那些有着超大数据集(largedataset)的应用程序。、

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据

提供了存储,则MapReduce为海量的数据提供了计算。

Spark:Spark,拥有Hadoop、MapReduce所具有能更好地适用于数据挖掘

与机器学习等需要迭代的的优点;但不同于MapReduce的是Job中间输出结果可

以保存在内存中,从而不再需要读写HDFS,因此SparkMapReduce的算法。

Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在

一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加

优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,

它还可以优化迭代工作负载。

Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件

映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为

MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实

现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库

的统计分析。

Sqoop-.Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工

具,可以将一个关系型数据库(例如:MySQL,Oracle,Postgres等)中的数

据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

EZizae:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量

日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,

用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方

(可定制)的能力。

kafka-.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消

费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户

的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由

于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日

志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。

Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也

是为了通过集群机来提供实时的消费。

ES:我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:

搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置

和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数

据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,

我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。

Elasticsearch(简称ES)旨在解决所有这些问题和更多的问题。

统:

问大数据怎么分类的?

答按照数据分析的实时性,分为实时数据和离线分析两种;按照大数据的

数据量,分为内存级别、BI级别、海量级别三种。

问大数据目前存在的问题是什么?

答数据的真实性,样本代表性,相关性误差,故事化,隐私侵犯。

第二章数据源与SQL引擎

本章节主要介绍了数据与大数据平台之间的导入导出,我们通常所说的数据

源主要有四大类:结构(SQL)数据,文件、日志数据,实时流数据,互联网数

据。这些数据的存在方式有两种:存在数据库中或者本地文件中,根据文中所讲

解的方法,只要将数据和平台之间的参数一一对应正确,就可以完成数据与平台

间的导入导出工作。

2.1关系型数据库(SQL数据库)与大数据平台之间的数据

导入导出

本部分将一些外部数据源导入大数据平台或者反向导出。外部数据源支持:

Oracle数据库、mySQL数据库、SQLServer数据库。

关系型数据库的优势:

1.保持数据的一致性(事务处理)

2.由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一

处)

3.可以进行Join等复杂查询。

其中能够保持数据的一致性是关系型数据库的最大优势。

关系型数据库的不足:

1.大量数据的写入处理

2.为有数据更新的表做索引或表结构(schema)变更

3.字段不固定时应用

4.对简单查询需要快速返回结果的处理

非关系型数据库对于这关系型数据库和非关系型数据库,对方的优势就是自

己的弱势,反之亦然。

面对数据库高并发读写的需求,海量数据的高校存储和访问的需求,数据库

的高扩展性和高可用性的需求,大数据平台NOSQL数据库可以高效解决以上需

求。

将海量数据从SQL数据库导入到NOSQL数据库时,以便后期将数据进行数据

检索,数据抓取,数据清洗,自然语言处理,机器学习等等。或者将NOSQL数据

库里数据导出到SQL数据库时,需要用到我们的工具类DKTransformationData。

工具类名称:DKTransformationData

2.1.1从数据库某个表导入数据到NOSQL

方法签名:Stringdb2nosql(StringjdbcStr,StringuName,String

pwd,StringtbName,StringwhereStr,StringdirName,String

writeMode,StringthreadNum,Stringhostlp,StringhostName,String

hostPassword);

返回:空一正确,非空:错误信息

签名参数说明:jdbcStr,uName,pwd,tbName,whereStr分别为jdbc连接串,

用户名,密码,表名,条件串,dirName:输出目录名,writeMode:0表示覆

盖,1表示增量,threadNum:表示启用的线程数(线程数不能大于符合条件的

记录数,一般建议与节点数量相同,如果该表中没有主键,则线程数为D,hostlp:

要连接主机的ip地址,hostName:要连接主机的用户名,hostPassword:要连

接主机的密码(要具备执行Hadoop的权限的用户)。

范例:把mysql数据库中名称为db的表中的数据导入到大数据平台的

Vuser/root/dk"目录下,可以用db2nosql方法进行数据的导入。

程序清单2.1.1

publicclassTestRdbmsToNosql{

publicstaticvoidmain(String[]args){

try(

Stringdb2nosql=

DKTransfonnationData.db2nosql("jdbc:mysql://00:3306/mysql",

"root","123456","db","","/user/root/dk","0","1","00","root","root");

if(db2nosql==""){

System.eir.printin("数据导入成功!SUCCESS!0);

}else{

System,err.printin(“数据导入失败!FAIL!");

System.err.printin("错误信息:”+db2nosql);

)

}catch(Exceptione){

e.printStackTrace();

2.1.2从NOSQL导出数据到关系型数据库

方法签名:Stringnosql2Rdbms(StringjdbcStr,StringuName,String

pwd,StringtbName,StringexportDir,StringthreadNum,String

hostlp,StringhostName,StringhostPassword)

返回:空一正确,非空:错误信息。

签名参数说明:jdbcStr,uName,pwd,tbName分别为jdbc连接串,用户名,

密码,表名,exportDir:要从hdfs导出的目录,threadNum:表示启用的线程

数(一般建议与节点数量相同),hostlp:要连接主机的ip地址,hostName:要

连接主机的用户名,hostPassword:要连接主机的密码(要具备执行Hadoop的

权限的用户)。

说明:关系型数据库表要存在并且字段数量与导入数据字段数量相匹配。

范例:把“/user/root/dk”目录下的数据导出到mysql数据库的一张表中,首

先要确保这个表存在,且数据字段与表中的字段一一对应。如上面db2nosql方

法导出到大数据平台的数据为例,我们要先在数据库中建立和db表相同表结构

的一张表,才能进行数据的导入。

程序清单2.1.2

publicclassTestNosqlToRdbms{

publicstaticvoidmain(String[]args){

try(

Stringnosql2Rdbms=

DKTransformationData.nosql2Rdbms("jdbc:mysql://00:3306/mysql",

"root","123456","testRdbmsToNosql","/user/root/dk","l","00","root",

"root");

if(nosql2Rdbms==""){

System.err.println("数据导出成功!SUCCESS!");

}else{

System.err.println("数据导出失败!FAIL!");

System.err.println("错误信息:"+nosql2Rdbms);

}

}catch(Exceptione){

e.printStackTrace();

2.2本地文件与大数据平台之间导入导出

本部分将本地文件导入大数据平台或者反向导出。导入的文件类型为:TXT、

DOC,PDF类型文件。导出的文件为TXT类型。

我们工作中经常会遇到大量数据表格,有pdf文档,excel文档,word

文档和文本文件。当我们面对大量数据做一些基本的处理分析时,手动处理显然

耗时耗力,如对本地文件数据进行数据检索,数据抓取,数据清洗,自然语言处

理,机器学习等等处理时,或大数据平台处理好的数据要导出到本地文件时,需

要用到我们的工具类DKTransformationData来将文件与大数据平台之间导入或

导出处理。

工具类名称:DKTransformationData

2.2.1本地文件导入数据到N0SQL

本地文件的导入分为本地文件组和单个文件两类型。

(1)本地文件组导入数据到NOSQL(文件类型为TXT、DOC、PDF)

方法签名:Stringfile2nosql(StringfilePath,StringdirName,String

nosqlUrl,intfileLength);

返回:空一正确,错误抛出异常

签名参数说明:filePath分别为本地文件目录(包括文件名,如果不写文

件名,则导入目录中全部文件),dirName:输出目录名(包括文件名),nosqlUrl

为连接hdfs的地址及端口(hdfs://namenode-ip地址:8020),fileLength文件

长度限制(K为单位。文件存为SequenceFile格式(二进制格式))。

范例:要将本地"C:\\Users\\Administrator\\Desktop\\aaa"文件夹下的TXT、

DOC、PDF文件导入到大数据平台中,可以使用file2nosql方法进行导入,最终

在大数据平台中存储的格式为SequenceFile格式的文件,如果后期想进行处理需

要另行解析。

程序清单2.2.1(1)

publicclassTestFileToNosql{

publicstaticvoidmain(String[]args){

try(

Stringfile2nosql=

DKTransformationData.file2nosql("C:\\Users\\Administrator\\Desktop\\aaa","/us

er/root/file2nosql","hdfe://00:8020",100);//KB

if(file2nosql==""){

System.err.println("数据导入成功!SUCCESS!");

)

}catch(Exceptione){

e.printstackTrace();

(2)本地文件导入数据到NOSQL(文件类型为TXT、DOC、PDF)

方法签名:Stringfile2nosql2(StringfilePath,StringdirName,String

nosqlUrl,intfileLength);

返回:空一正确,错误抛出异常

签名参数说明:filePath为本地文件(包括路径),dirName:输出目录名

(包括文件名),nosqlUrl为连接hdfs的地址及端口(hdfs:〃namenode-ip地

址:8020),fileLength文件长度限制(K为单位。文件不能存为SequenceFile

格式)。

范例:将本地"C:\\Users\\Administrator\\Desktop\\aaa"文件夹下的单个TXT、

DOC或PDF文件导入到大数据平台中,可以使用file2nosql2方法进行导入.

程序清单221(2)

publicclassTestFileToNosql2{

publicstaticvoidmain(String[]args){

try(

Stringfile2nosql2=

DKTransformationData.file2nosql2("C:\\Users\\Administrator\\Desktop\\aaa\\a.tx

t","/user/root/file2nosql2/a.txt","hdfs://00:8020",100);//KB

if(file2nosql2==""){

System.err.println("数据导入成功!SUCCESS!");

}

}catch(Exceptione){

e.printStackTrace();

(3)本地文件组导入数据到NOSQL(HBase)

方法签名:Stringfile2hbase(StringfilePath,StringtableName,int

fileLength,StringzkHostlp);

返回:空一正确,错误抛出异常

签名参数说明:filePath为本地文件(包括路径),tabieName为hbase的

表名称,fileLength文件长度限制(K为单位。),zkHostlp为zookeeper的主

机IP。(Zookeeper是为一个分布式应用提供一致性服务的软件,功能:配置维

护、域名服务、分布式同步、组服务。)

范例:将本地〃C:\\Users\\Administrator\\Desktop\\aaa〃文件夹下的所有

文件导入到大数据平台的HBASE数据库中,可以使用file2hbase方法实现,使

用本方法可以实现特定长度的文件导入。

程序清单221(3)

publicclassTestFileToHbase{

publicstaticvoidmain(String[]args){

try(

Stringfile2hbase=

DKTransformationData.file2hbase(,,C:\\Users\\Administrator\\Desktop\\aaa,,,',file

2hbasen,l00,M00:2181");〃KB

if(file2hbase="“){

System.eir.printin("数据导入成功!SUCCESS!0);

}catch(Exceptione){

e.printStackTrace();

2.2.2从NOSQL导出数据到本地文件(文件类型为TXT)(文件存储

目录为单一目录)

方法签名:Stringnosql2file(StringfilePath,StringexportDir,String

hdfsUrl)

返回:空一正确,错误抛出异常。

签名参数说明:filePath分别为本地文件目录(文件不用命名,系统会自

动命名),exportDir:要从nosql导出的目录,hdfsUrl为连接hdfs的地址及端

口。

范例:从大数据平台7user/root/”目录下导出文件,可以使用nosql2file

方法把“/user/root/〃目录下特定的文件导出到本地指定的目录中。

程序清单2.2.2

publicclassTestNosqlToFile{

publicstaticvoidmain(String[]args){

try(

Stringnosql2file=

DKTransformationData.nosql2file("C:\\Users\\Administrator\\Desktop\\util",

7user/root/","hdfs://00:8020");//KB

if(nosql2file==""){

System.err.println("数据导出成功!SUCCESS!");

}

}catch(Exceptione){

e.printstackTrace();

2.3SQL引擎

本部分主要介绍了连接数据库、建HIVE表和追加HIVE表,当我们有很多张

表的时候,要处理表与表之间关联的复杂查询,进行一些基本的增删改查要用到

连接NOSQL数据库,做sql类数据的统计分析要将数据放到HIVE表里进行处理。

即处理表之间的复杂操作和sql类的数据统计查询要用到SQLUtils工具类。

工具类名称:SQLUtils

2.3.1连接NOSQL数据库

如果我们要连接大数据平台的nosql类的数据库,可以使用

connectionNOSQL方法来进行连接,做我们需要的SQL查询。

方法签名:ConnectionconnectionNOSQL(StringhostIP,String

port,Stringusername,Stringpassword,StringjdbcDriverName);

返回:正确-返回Connection连接,错误抛出异常。

签名参数说明:hoslIP为nosql所在节点的ip;port为hive的端口;

username为连接hive的用户名;password为密码;jdbcDriverName为连接nosql

的驱动URL串。

2.3.2建立HIVE数据表

利用createTable方法可以在hive中建立我们想要的特定格式的数据表,

如同在普通关系数据库(mysql)中一样。

方法签名:booleancreateTable(Connectioncon,Stringsql,String

optStr)o

返回:true一成功,false一失败。

签名参数说明:con,sql,optStr分别为JDBCConnection连接,标准的sql

建表语句(末尾不加分号),每行字段间的分隔符。

2.3.3追加HIVE数据表

利用loadData方法可以将Linux平台中指定目录中符合格式的数据,导入

到指定的hive表中,值得注意的是数据格式要和创建表时指定的格式相同,否

则数据会丢失。

方法签名:booleanloadData(Connectioncon,StringfilePath,String

tabieName)。

返回:true一成功,false一失败。

签名参数说明:con,filePath,tabieName分别为JDBCConnection连接,

数据在nosql上的路径地址(包含文件名),nosql的表名。

连接好数据库后,其余操作和操作关系型数据库一致。(其余操作参见JDBC

api)o

相同键值或记录会造成重复,因此在导入前请区分。

范例:连接大数据平台的NOSQL数据库,建立一张名为tbl的hive表,将

符合格式的数据追加到此hive表中。

程序清单2.3

publicclassTestSQLUtils{

publicstaticvoidmain(String[]args){

Connectioncon=null;

Statementstmt=null;

ResultSetrs=null;

try{

〃连接NOSQL数据库

con=SQLUtils.connectionNOSQL("00","10000",

"hive","","org.apache.hive.jdbc.HiveDriver");

〃建立HIVE数据表

booleantable=SQLUtils.createTable(con,"createtableIFNOT

EXISTStbl(idstring,ageString)",

if(table){

System.out.println("创建表成功!");

)

〃追加数据到HIVE数据表

booleanloadData=SQLUtils.loadData(con,

"/user/root/file2nosql?/a.txt","tbl");

if(loadData){

System.out.printing装载数据成功!");

}else{

System.out.printing装载数据失败!");

}

stmt=con.createStatement();

〃查询数据

rs=stmt.executeQueryC^ELECT*FROMtbl");

System.out.println("\n==BeginQueryResults

//printtheresultstotheconsole

while(rs.next()){

//theexamplequeryreturnsoneStringcolumn

System.out.print(rs.getString(,,id,,)+,,:',);

System.out.println(rs.getString("ageH));

}

System.out.println(H==EndQueryResults

=======================\n\n");

}catch(SQLExceptione){

e.printStackTrace();

}catch(Exceptione){

e.printStackTrace();

}finally{

try(

rs.close();

stmt.close();

con.close();

}catch(Exceptione){

//swallow

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论