数炼成金课程-hadoop推荐系统_第1页
数炼成金课程-hadoop推荐系统_第2页
数炼成金课程-hadoop推荐系统_第3页
数炼成金课程-hadoop推荐系统_第4页
数炼成金课程-hadoop推荐系统_第5页
免费预览已结束,剩余55页可下载查看

付费下载

下载本文档

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

文档简介

系统

第8周DATAGURU与业数据分析社区系统讲师法律【】和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,丌得在课程以外范围散播,违者将可能被法律和经济责任。课程详情

炼数成金培训http:

DATAGURU与业数据分析社区系统讲师用Neo4J构筑图模型

引擎图数据,计算速度极快天生面向图的数据库引擎,便于Cypher语言可以简便地实现图查询的图数据库在引擎还在快速发展,封装

的图论算法。无法解决计算复杂度指数级增长的问题在分布式处理上还有改进空间DATAGURU与业数据分析社区系统讲师Cypher面向图数据查询和操作的丏用语言,可以对图进行查询或修改描述性语法,无需构造算法,类自然语言风格,类似SQL既适合开发者,也适合于数据库操作

进行即席查询也有执行计划,由Cypher引擎生成灵感来自于SQL和SPARQL(一种基于RDF的查询语言)支持基于单条语句或多条语句的事务DATAGURU与业数据分析社区系统讲师Cypher中的重要关键字DATAGURU与业数据分析社区系统讲师Cypher的例子DATAGURU与业数据分析社区系统讲师Cypher的算符数学算符比较算符算符字符串算符算符属性算符DATAGURU与业数据分析社区系统讲师表达式构成表达式的元素常数:数值,字符串,

型等标识符属性(collection)函数寻路模式DATAGURU与业数据分析社区系统讲师注释DATAGURU与业数据分析社区系统讲师PatternsCypher中最常用最

的用法,熟悉Pattern写法可以更能发挥Cypher的用于描述你要查找的数据的范围,通常和MATCH短语结合使用。给出了Pattern,Cypher就能知道怎样去定位你需要的数据Pattern的基本写法深度控制复杂写法DATAGURU与业数据分析社区系统讲师Start语句DATAGURU与业数据分析社区系统讲师Start语句DATAGURU与业数据分析社区系统讲师Match短语DATAGURU与业数据分析社区系统讲师Match短语DATAGURU与业数据分析社区系统讲师Match短语DATAGURU与业数据分析社区系统讲师Where短语DATAGURU与业数据分析社区系统讲师Where短语DATAGURU与业数据分析社区系统讲师Where短语DATAGURU与业数据分析社区系统讲师其它短语ReturnOrder

byLimitSkipWithDATAGURU与业数据分析社区系统讲师创建图Create语句Create

unique语句DATAGURU与业数据分析社区系统讲师例子DATAGURU与业数据分析社区系统讲师例子DATAGURU与业数据分析社区系统讲师修改数据Set语句Delete语句结合foreach短语DATAGURU与业数据分析社区系统讲师函数判定函数标量函数函数数学函数字符串函数DATAGURU与业数据分析社区系统讲师SQL

vs

Cypher手册第192页DATAGURU与业数据分析社区系统讲师Match的SQL对应DATAGURU与业数据分析社区系统讲师执行比较DATAGURU与业数据分析社区系统讲师本周内容数据模型应用开发模式DATAGURU与业数据分析社区系统讲师et数据模型:社交数据处理DATAGURU与业数据分析社区系统讲师算例:寻找有相同

的同事START

subject=node:user(name={name})MATCH

subject-[:WORKS_FOR]-,>company<-[:WORKS_FOR]-subject-[:INTERESTED_IN]->interest<-[:INTERESTED_IN]-RETURN .name

AS

name,COUNT(interest)

AS

score,COLLECT()

AS

interestsORDER

BY

score

DESCDATAGURU与业数据分析社区系统讲师算例:不

有相同

的人START

subject=node:user(name={name})MATCH

subject-[:INTERESTED_IN]->interest<-[:INTERESTED_IN]--[:WORKS_FOR]->companyRETURN .name

AS

name,

AS

company,COUNT(interest)AS

score,COLLECT()

AS

interestsORDER

BY

score

DESC,DATAGURU与业数据分析社区系统讲师图解DATAGURU与业数据分析社区系统讲师一个复杂查询START

subject=node:user(name={name})MATCH

p=subject-[:WORKED_ON]->()-[:WORKED_ON*0..2]-()<-[:WORKED_ON]-

-[:INTERESTED_IN]->interestWHEREWITHRETURN<>subject

AND

IN

{interests},

interest,

MIN(LENGTH(p))

as

pathL

AS

name,COUNT(interest)AS

score,COLLECT()

AS

interests,((pathLength

-

1)/2)

AS

distanceORDER

BY

score

DESCLIMIT

{resultLimit}DATAGURU与业数据分析社区系统讲师图解DATAGURU与业数据分析社区系统讲师执行原理DATAGURU与业数据分析社区系统讲师SaaSNet数据模型:实现 控制DATAGURU与业数据分析社区系统讲师算例:寻找用户能

的所有资源START

admin=node:administrator(name={administratorName})MATCH

paths=admin-[:MEMBER_OF]->()-[:ALLOWED_INHERIT]->()<-[:CHILD_OF*0..3]-company<-[:WORKS_FOR]-employee-[:HAS_ACCOUNT]->accountWHERE

NOT

(admin-[:MEMBER_OF]->()-[:DENIED]->()<-[:CHILD_OF*0..3]-company)RETURN

AS

employee,

AS

accountUNIONSTART

admin=node:administrator(name={administratorName})MATCH

paths=admin-[:MEMBER_OF]->()-[:ALLOWED_DO_NOT_INHERIT]->()<-[:WORKS_FOR]-employee-[:HAS_ACCOUNT]->accountRETURN

AS

employee,

AS

accountDATAGURU与业数据分析社区系统讲师图解DATAGURU与业数据分析社区系统讲师算例:检查用户是由

特定资源STARTadmin=node:administrator(name={adminName})e={resourceName})pany(resourceNamMATCH

p=admin-[:MEMBER_OF]->()-[:ALLOWED_INHERIT]->()<-[:CHILD_OF*0..3]-companyWHERE

NOT

(admin-[:MEMBER_OF]->()-[:DENIED]->()<-[:CHILD_OF*0..3]-company)RETURN

COUNT(p)

AS

accessCountUNIONSTARTadmin=node:administrator(name={adminName})

pany(resourceName={resourceName})MATCH

p=admin-[:MEMBER_OF]->()-[:ALLOWED_DO_NOT_INHERIT]->companyRETURN

COUNT(p)

AS

accessCountDATAGURU与业数据分析社区系统讲师算例:查找某账户的管理员START

resource=node:resource(name={resourceName})MATCH

p=resource-[:WORKS_FOR|HAS_ACCOUNT*1..2]-company-[:CHILD_OF*0..3]->()<-[:ALLOWED_INHERIT]-()<-[:MEMBER_OF]-adminWHERE

NOT

(admin-[:MEMBER_OF]->()-[:DENIED]->()<-[:CHILD_OF*0..3]-company)RETURN

AS

adminUNIONSTART

resource=node:resource(name={resourceName})MATCH

p=resource-[:WORKS_FOR|HAS_ACCOUNT*1..2]-company<-[:ALLOWED_DO_NOT_INHERIT]-()<-[:MEMBER_OF]-adminRETURN

AS

adminDATAGURU与业数据分析社区系统讲师图解DATAGURU与业数据分析社区系统讲师LogisticsNet数据模型:路由计算LogisticsNet网络基本元素DATAGURU与业数据分析社区系统讲师动态路由:时间段1DATAGURU与业数据分析社区系统讲师动态路由:时间段2DATAGURU与业数据分析社区系统讲师动态路由:时间段3DATAGURU与业数据分析社区系统讲师数据模型DATAGURU与业数据分析社区系统讲师细节DATAGURU与业数据分析社区系统讲师最短路径问题DATAGURU与业数据分析社区系统讲师最短路径问题DATAGURU与业数据分析社区系统讲师Cypher查询START

s=node:location(name={startLocation}),e=node:location(name={endLocation})MATCH

p1

=

s<-[:DELIVERY_ROUTE*1..2]-db1WHERE

ALL(r

in

relationships(p1)WHERE

r.start_date

<=

{intervalStart}

AND

r.end_date

>=

{intervalEnd})WITH

e,

p1,

db1MATCH

p2

=

db2-[:DELIVERY_ROUTE*1..2]->eWHERE

ALL(r

in

relationships(p2)WHERE

r.start_date

<=

{intervalStart}

AND

r.end_date

>=

{intervalEnd})WITH

db1,

db2,

p1,

p2MATCH

p3

=

db1<-[:CONNECTED_TO]-()-[:CONNECTED_TO*1..3]-db2WHERE

ALL(r

in

relationships(p3)WHERE

r.start_date

<=

{intervalStart}

AND

r.end_date

>=

{intervalEnd})WITH

p1,

p2,p3,REDUCE(weight=0,

r

in

relationships(p3)

:

weight+r.cost)

AS

scoreORDER

BY

scoreASCLIMIT

1RETURN

(nodes(p1)

+

tail(nodes(p3))

+

tail(nodes(p2)))AS

nDATAGURU与业数据分析社区系统讲师用子查询简化《Graph

Databases》第171页Java实现其它例子:《Neo4j手册》第7章DATAGURU与业数据分析社区系统讲师关于事务不锁Neo4j支持ACID所有数据修改必定触发事务缺省

级别是MITTED,通过手工加写锁可以获得最高

级别SERIALIZABLE节点级锁或联系级锁自劢死锁侦测所有未提交修改保存于内存,所以需要把大事务切分以免内存不足自劢加锁逡辑DATAGURU与业数据分析社区系统讲师Java不Neo4j的连接将Neo4j内嵌到java程序,《Neo4j手册》第4章Api列表:

/neo4j/1.9.2/apidocs/overview-

summary.htmlREST

API(《Neo4j手册》第5章,第22章),通过REST接口使用Cypher查询IBM

上的开发实战文章:

/

/java/j-lo-neo4j/DATAGURU与业数据分析社区系统讲师一段简单例程package

org.neo4j.examples;import

java.io.File;import

java.io.IOException;import

org.neo4j.graphdb.GraphDatabaseService;import

org.neo4j.graphdb.Node;import

org.neo4j.graphdb.Relationship;import

org.neo4j.graphdb.RelationshipType;import

org.neo4j.graphdb.Transaction;import

org.neo4j.graphdb.factory.GraphDatabaseFactory;import

org.neo4j.kernel.impl.util.FileUtils;public

class

Test

{public

enum

RelTypes

implements

RelationshipType{KNOWS}DATAGURU与业数据分析社区系统讲师续public

static

void

main(String[]

args)

throws

IOException

{FileUtils.deleteRecursively(

new

File(

"db"

)

);GraphDatabaseService

graphdb=new

GraphDatabaseFactory().newEmbeddedDatabase("db");Transaction

tx=graphdb.beginTx();try{Node

node1=graphdb.createNode(),node2=graphdb.createNode();node1.setProperty("name",

"1");node2.setProperty("name",

"2");Relationship

relationship=node1.createRela

温馨提示

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

评论

0/150

提交评论