S2X环境搭建与示例运行

http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2X.html

环境

依赖

根据 pom.xml 文件,S2X 主要有以下六个依赖包

结构

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中

环境搭建步骤

  1. 安装并配置好 jdk1.7jdk1.8

  2. 访问网站,下载并安装 Eclipse Kepler Package 并解压,建议选择 JavaEE 并使用国内镜像下载

  3. 配置 Maven 环境

  4. 配置scala环境

  5. 配置spark环境

    • 根据 pom.xml 中的信息,理论上应该下载基于 Scala 2.10Spark 1.2-CDH5.3.0版本,然而我并找不到。。暂时下载了spark-1.6.0-bin-hadoop2.6.tgz
    • 解压,并将 bin 目录加入 path
  6. 配置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 是什么

运行项目

  1. 从 github 仓库 clone 项目

  2. 打开Eclipse Kepler,File->import->Existing Maven Project->选择仓库中src文件夹,一路确定,等待 Maven 自行下载所有包

  3. 准备好数据,我使用的是里海大学提供的可自动生成的数据集 LUBM1.nt 约包含 13 万条三元组数据。

  4. 如果是在windows上运行代码,需要修改几行代码:

    • 修改 args 参数

      • 由于在 Spark 上运行代码,需要将代码整理为 jar 包的形式,在测试时需要提前设置命令行参数,或者直接在 QueryExecutor.javamain 函数中第一行中修改 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>

待解决的问题

  1. -so 参数

    • GraphLoader 在加载图时,如果命令中存在 -so 参数,则最后将生成 verticeedge 信息对应的 object 文件,但是文件路径会有一个问题:操作系统中不能存在同名文件与文件夹,因此以本地模式运行代码时不能在参数中添加 -so

S2X环境搭建与示例运行的更多相关文章

  1. Appium(JAVA)Windows 7系统搭建及示例运行

    Appium(JAVA)Windows 7系统搭建及示例运行 分类: Appium 2014-11-14 17:44 4323人阅读 评论(2) 收藏 举报 1.搭建Android环境 http:// ...

  2. vue前端+java后端 vue + vuex + koa2开发环境搭建及示例开发

    vue + vuex + koa2开发环境搭建及示例开发 https://segmentfault.com/a/1190000012918518 vue前端+java后端 https://blog.c ...

  3. HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客

    HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机   2014年06月02日 17:20   评论»       文章目录 Debian上安装 Ce ...

  4. 【Java学习系列】第1课--Java环境搭建和demo运行

    本文地址 分享提纲: 1. java环境的搭建 2. java demo代码运行 3.参考文档 本人是PHP开发者,一直感觉Java才是程序的王道(应用广,科班出身),所以终于下决心跟一跟. 主要是给 ...

  5. RocketMQ4.5.1环境搭建及示例

    一.Windows环境搭建RocketMQ 1. 下载RocketMQ Binary压缩包,并解压缩,我的安装目录为E:\programs\rocketmq\rocketmq-all-4.5.1 2. ...

  6. react介绍、环境搭建、demo运行实例

    React官网:https://reactjs.org/docs/create-a-new-react-app.html cnpm网址:http://npm.taobao.org/ 1.react介绍 ...

  7. github上DQN代码的环境搭建,及运行(Human-Level Control through Deep Reinforcement Learning)conda配置

    最近师弟在做DQN的实验,由于是强化学习方面的东西,正好和我现在的研究方向一样于是我便帮忙跑了跑实验,于是就有了今天的这个内容. 首先在github上进行搜寻,如下图: 发现第一个星数最多,而且远高于 ...

  8. ionic —— 开发环境搭建并编译运行第一个APP

    其实类似的环境已经玩了很多次了,最开始玩还是微信刚刚出来,那会儿没有智能机.只好安装一个模拟器,却只是为了注册一个微信.想想也就是够了~ 前前后后折腾了很多次,可是每一次都给人不一样的感觉,也许是这个 ...

  9. Appium环境搭建——安装以及运行appium server失败点总结

    一.运行Appium失败:未安装.Net Framework 4.5 之前安装AppScan安全测试工具时,就要求.Net 4.5以上环境,我其中一台电脑的系统是Win7-32bit的,安装.Net ...

随机推荐

  1. 19LaTeX学习系列之---LaTeX的总结

    目录 目录 前言 (一)本系列的章节目录 (二)快速温习LaTeX 1.介绍 2.源文件结构 3.文档的结构 4.字体的设置 5.图片的插入 6.表格的插入 7.数学公式的插入 8.交叉引用与浮动体 ...

  2. 5、爬虫之scrapy框架

    一 scrapy框架简介 1 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Sc ...

  3. centos7下安装docker(12.2自定义网络)

    通常默认的情况下我们使用的是docker的bridge的网络,用户也可以根据自己的业务需要,创建user-defined docker 提供三种user-defined网络驱动:bridge,over ...

  4. node.js如何将远程的文件下载到本地、解压、读取

    其实要解决的问题,很简单,获取远程文件,然后解压到本地读取. 在vscode中通过node.js来实现是比较方便的,相比之前的zip.js,我觉得我还是比较喜欢node.js实现方式. test.js ...

  5. 深入浅出的webpack构建工具---babel之配置文件.babelrc(三)

    阅读目录 一:理解 babel之配置文件.babelrc 基本配置项 二:在webpack中配置babel 回到顶部 一:理解 babel之配置文件.babelrc 基本配置项 1. 什么是babel ...

  6. Java并发(三)线程池原理

    Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池.在开发过程中,合理地使用线程池能够带来3个好处. 1. 降低资源消耗.通过重复利用已创建的线程降低线程 ...

  7. C++ assert断言

    assert断言通常用于调试,用法如下: assert(expr); // 当expr==0时,系统会调用abort来终止程序运行 调试完成后,可以在include <assert.h>之 ...

  8. Skyline 二次实现单体化模型选择查询示例代码

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  9. Mybatis自动生成实体类

    Maven自动生成实体类需要的jar包 一.pom.xml中 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...

  10. React-异步组件及withRouter路由方法的使用

    所有组件的代码都打包在bundle.js里,加载首页的时候,把其它页面的代码也加载了,影响首页加载速度.我们希望访问首页的时候只加载首页,访问详情页的时候再去加载详情页的代码.异步组件可以帮我们实现, ...