S2X环境搭建与示例运行
S2X环境搭建与示例运行
http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2X.html
环境
- Maven project
- Built in Eclipse
- Eclipse 3.8/4.2/4.3 (Juno & Kepler)
- Juno https://www.eclipse.org/downloads/packages/release/juno/sr2
- Kepler https://www.eclipse.org/downloads/packages/release/kepler/sr2
- The Eclipse Plug-Ins M2E (Version 1.5.0)
- Scala plugin from scala-ide.org (Version 3.0.3v-2_10...)
- The 3.0.3 release is the third maintenance release of the 3.0 version.
- It is available for Scala 2.10, on Eclipse 3.8/4.2/4.3 (Juno & Kepler).
依赖
根据 pom.xml 文件,S2X 主要有以下六个依赖包
- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10/1.2.0-cdh5.3.0
- https://mvnrepository.com/artifact/org.apache.spark/spark-graphx_2.10/1.2.0-cdh5.3.0
- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client/2.5.0-mr1-cdh5.3.0
- https://mvnrepository.com/artifact/org.apache.jena/jena-arq/2.11.2
- https://mvnrepository.com/artifact/com.esotericsoftware.kryo/kryo/2.24.0
- https://mvnrepository.com/artifact/junit/junit/4.11
结构
| java文件名 | 引用包 | 功能 |
|---|---|---|
| QueryExecutor.java | log4j:一个打日志的包 spark:操作spark的包 jena:用于操作sparql的包 |
1. 将args交给 ArgumentParser 解析 2. 使用SparkFacade创建spark上下文 3. 使用SparkFacade加载 HDFS (实例层)文件 4. 处理查询语句 - 使用IntermediateResultsModel清理中间值 - 使用jena.query.QueryFactory解析并生成query对象、处理前缀、编译query - 使用AlgebraTranslator从opRoot开始对query进行重写,并获得可执行序列 - 通过SparkOp.execute()开始执行顺序序列中元素 |
| ArgumentParser.java | cls:一个处理命令行的包 log4j:一个打日志的包 de.tf.uni.freiburg.sparkrdf.constants.Const:工程内另一个包 |
1. 解析命令行参数 2. 将参数传递至de.tf.uni.freiburg.sparkrdf.constants.Const中 |
环境搭建步骤
安装并配置好 jdk1.7 或 jdk1.8
访问网站,下载并安装
Eclipse Kepler Package并解压,建议选择 JavaEE 并使用国内镜像下载配置 Maven 环境
- 访问 http://maven.apache.org/download.cgi 下载 Maven
- 新建环境变量
MAVEN_HOME,并将%MAVEN_HOME%\bin加入path - 修改
%MAVEN_HOME%\conf\settings.xml- 添加本地仓库:请选择一个非管理员目录
- 添加远程仓库:可选择国内阿里镜像或其他可访问镜像
- 配置 Eclipse 中 Maven
- Window->preference->Maven->installations :选择上一步安装的 Maven
- Window->preference->Maven->user settings :配置 Maven 设置
- 选择 settings.xml
- 更新 Local Repository
- 可参考
配置scala环境
- 访问 https://www.scala-lang.org/download/2.10.6.html 下载
Scala 2.10.6- 可下载 scala.msi 或 scala-2.10.6.zip ,但我还没弄明白这两个有什么区别
- 配置 Eclipse 中 Scala
- 访问 http://scala-ide.org/download/prev-stable.html
- 选择对应版本 http://download.scala-ide.org/sdk/helium/e38/scala210/stable/site (我没弄明白应该用哪个版本,然后选了2.10.4的)
- Help->Install New Software->粘贴->Add->下载安装
- 下载 Scalastyle 插件
- 访问 https://www.scala-lang.org/download/2.10.6.html 下载
配置spark环境
- 根据
pom.xml中的信息,理论上应该下载基于Scala 2.10的Spark 1.2-CDH5.3.0版本,然而我并找不到。。暂时下载了spark-1.6.0-bin-hadoop2.6.tgz - 解压,并将 bin 目录加入 path
- 根据
配置hadoop环境
- 根据上一步,下载hadoop2.6.0
- 解压,新建环境变量
HADOOP_HOME,并填入解压目录(很关键) - 将 bin 目录加入 path
- 开启 cmd,运行
spark-shell,若出现"java.lang.NullPointerException, not found: value sqlContext",请参考连接:https://blog.csdn.net/u011242657/article/details/53968135 - 最后新建 cmd 窗口,运行
spark-shell,出现以下两句话,视为 spark 与 hadoop 环境配置成功,参考:Spark在Windows下的环境搭建- Spark context available as sc.
- SQL context available as sqlContext.
关于 5、6 两步,官方推荐使用
Cloudera's Distribution of Hadoop CDH,我暂时也没有弄明白CDH是什么
运行项目
从 github 仓库 clone 项目
打开Eclipse Kepler,File->import->Existing Maven Project->选择仓库中src文件夹,一路确定,等待 Maven 自行下载所有包
准备好数据,我使用的是里海大学提供的可自动生成的数据集 LUBM1.nt 约包含 13 万条三元组数据。
如果是在windows上运行代码,需要修改几行代码:
修改
args参数由于在 Spark 上运行代码,需要将代码整理为 jar 包的形式,在测试时需要提前设置命令行参数,或者直接在
QueryExecutor.java的main函数中第一行中修改args变量(-l参数很关键 ):args=new String("-i c:/Users/chenyanji/Downloads/S2X_DATA/lubm1.nt " +
"-mem 2g " +
"-q c:/Users/chenyanji/Downloads/S2X_DATA/query3.new " +
"-t c:/Users/chenyanji/Downloads/S2X_DATA/Record.txt " +
"-p -l -jn chenyanjiTest").split(" ");
修改
SparkFacade.java- 程序开始运行后,首先通过
SparkFacade.LoadGraph()加载图,LoadGraph 需要先判断路径(父目录与参数目录进行拼接)下是否存在图(看起来使用的是相对父目录的路径),随后根据上一步的参数选择使用哪种方式读取图,这里将路径进行修改 - 删去
fs.getHomeDirectory().toString()
- 程序开始运行后,首先通过
运行结果:
...
18/10/23 10:00:43 INFO run.QueryExecutor: Started Graph loading
18/10/23 10:00:56 INFO run.QueryExecutor: Finished Graph Loading in 12958 ms
18/10/23 10:00:56 INFO run.QueryExecutor: Started query file: c:/Users/chenyanji/Downloads/S2X_DATA/query3.new
18/10/23 10:00:56 INFO run.QueryExecutor: Started BGP
18/10/23 10:01:05 INFO run.QueryExecutor: Finished BGP in 8713 ms
18/10/23 10:01:05 INFO run.QueryExecutor: Started Result
18/10/23 10:01:06 INFO run.QueryExecutor: Finished Result in 798 ms
18/10/23 10:01:06 INFO run.QueryExecutor: Started Projection
18/10/23 10:01:06 INFO run.QueryExecutor: Finished Projection in 6 ms
18/10/23 10:01:07 INFO run.QueryExecutor: Result count 6
?x
<http://www.Department0.University0.edu/AssistantProfessor0/Publication4>
?x
<http://www.Department0.University0.edu/AssistantProfessor0/Publication2>
?x
<http://www.Department0.University0.edu/AssistantProfessor0/Publication0>
?x
<http://www.Department0.University0.edu/AssistantProfessor0/Publication5>
?x
<http://www.Department0.University0.edu/AssistantProfessor0/Publication1>
?x
<http://www.Department0.University0.edu/AssistantProfessor0/Publication3>
待解决的问题
-so参数- GraphLoader 在加载图时,如果命令中存在
-so参数,则最后将生成vertice与edge信息对应的 object 文件,但是文件路径会有一个问题:操作系统中不能存在同名文件与文件夹,因此以本地模式运行代码时不能在参数中添加-so
- GraphLoader 在加载图时,如果命令中存在
S2X环境搭建与示例运行的更多相关文章
- Appium(JAVA)Windows 7系统搭建及示例运行
Appium(JAVA)Windows 7系统搭建及示例运行 分类: Appium 2014-11-14 17:44 4323人阅读 评论(2) 收藏 举报 1.搭建Android环境 http:// ...
- vue前端+java后端 vue + vuex + koa2开发环境搭建及示例开发
vue + vuex + koa2开发环境搭建及示例开发 https://segmentfault.com/a/1190000012918518 vue前端+java后端 https://blog.c ...
- HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客
HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机 2014年06月02日 17:20 评论» 文章目录 Debian上安装 Ce ...
- 【Java学习系列】第1课--Java环境搭建和demo运行
本文地址 分享提纲: 1. java环境的搭建 2. java demo代码运行 3.参考文档 本人是PHP开发者,一直感觉Java才是程序的王道(应用广,科班出身),所以终于下决心跟一跟. 主要是给 ...
- RocketMQ4.5.1环境搭建及示例
一.Windows环境搭建RocketMQ 1. 下载RocketMQ Binary压缩包,并解压缩,我的安装目录为E:\programs\rocketmq\rocketmq-all-4.5.1 2. ...
- react介绍、环境搭建、demo运行实例
React官网:https://reactjs.org/docs/create-a-new-react-app.html cnpm网址:http://npm.taobao.org/ 1.react介绍 ...
- github上DQN代码的环境搭建,及运行(Human-Level Control through Deep Reinforcement Learning)conda配置
最近师弟在做DQN的实验,由于是强化学习方面的东西,正好和我现在的研究方向一样于是我便帮忙跑了跑实验,于是就有了今天的这个内容. 首先在github上进行搜寻,如下图: 发现第一个星数最多,而且远高于 ...
- ionic —— 开发环境搭建并编译运行第一个APP
其实类似的环境已经玩了很多次了,最开始玩还是微信刚刚出来,那会儿没有智能机.只好安装一个模拟器,却只是为了注册一个微信.想想也就是够了~ 前前后后折腾了很多次,可是每一次都给人不一样的感觉,也许是这个 ...
- Appium环境搭建——安装以及运行appium server失败点总结
一.运行Appium失败:未安装.Net Framework 4.5 之前安装AppScan安全测试工具时,就要求.Net 4.5以上环境,我其中一台电脑的系统是Win7-32bit的,安装.Net ...
随机推荐
- nginx重新安装 引起的问题
问题描述: 今天开发测试环境的网站需要做https认证,默认安装的nginx没有 http_ssl_module 模块,需要重新加载nginx 安装 http_ssl_module ,我采用的是默 ...
- Win10恢复账户默认半透明头像
WIN10账户默认的头像的都是半透明,但年少不更事就换了头像,接着看到别人的头像是半透明的,就开始后悔了,然后就去问度娘.结果大多数如下 对于一个有着强迫症患者的人来说,每次看到锁屏界面时的不透明账号 ...
- C语言变量定义与数据溢出(初学者)
1.变量定义的一般形式为:类型说明符.变量名标识符等:例:int a,b,c;(abc为整型变量) 在书写变量定义时应注意以下几点: (1)允许在一个类型说明符后,定义多个相同类型的变量.各变量之间用 ...
- 这不是我想要的ABAP开发者
原文在此: These Aren’t the Developers You’re Looking for 在吃饼干的过程中偶然看到这篇文章,立刻被UC化的标题吸引到了. 全文读完,感觉作者还是有点刻薄 ...
- DamonOehlman/detect-browser
https://github.com/DamonOehlman/detect-browser detect-browser This is a package that attempts to det ...
- Ubuntu16.04下安装配置phpmyadmin
在项目配置了阿里的druid,可以监控session,spring和详细sql的执行情况以及具体到表等信息,但是仍然发现不够详细,而且作为一个半吊子dba,一直用linux命令分配权限和管理数据库,效 ...
- nodeJS---URL相关模块用法(url和querystring)
nodeJS---URL相关模块用法(url和querystring) 一: URL模块: URL模块用于解析和处理URL的字符串,提供了如下三个方法: 1. parse 2. format 3. r ...
- jconsole使用
先看一张图 根据JConsole和任务管理器对比,堆内存大小在250M左右,差不多空跑一个程序用idea启动springboot就是这个大小 项目启动初始类在一万个左右,活动线程50个上下,cpu利用 ...
- Android学习之基础知识四-Activity活动3讲(Intent的使用)
主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...
- 2-物联网开发标配方案(51单片机程序介绍+WIFI程序介绍)
上一节 https://www.cnblogs.com/yangfengwu/p/9944438.html 购买云服务器安装MQTT就不用说了,以前写过文章介绍 https://www.cnblog ...