我试图执行流程如下:AWS LAMBDA + TinkerPop有关/精怪+ TitanDB在EC2 + AWS DynamoDB云
用户点击AWS网关(REST),
它触发AWS LAMBDA ,
使用TinkerPop有关/的Gremlin连接到
TitanDB上EC2,使用
云中的AWS DynamoDB(不在EC2上)作为后端。
现在我已经设法克隆完全在EC2上运行的TitanDB实例,它将数据存储在DynamoDB的云中。 我也能够从AWS LAMBDA连接通过TinkerPop有关/精怪,但只有这样EC2的:
Cluster.build()
.addContactPoint("10.x.x.x") // ip of EC2
.create()
.connect()
.submit("here I type my query as string and it will work");
而这个工作,但是我强烈地倾向于使用“标准API”,而不是简单的小鬼语言(GremlinPipeline) 。 换句话说,我需要ORM或类似的东西。 我知道,那Tinkerpop包括它。 我意识到,我需要的是Graph类的对象。 这是我曾尝试:
Graph graph = TitanFactory
.build()
.set("storage.hostname", "10.x.x.x")
.set("storage.backend", "com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager")
.set("storage.dynamodb.client.credentials.class-name", "com.amazonaws.auth.DefaultAWSCredentialsProviderChain")
.set("storage.dynamodb.client.credentials.constructor-args", "")
.set("storage.dynamodb.client.endpoint", "https://dynamodb.ap-southeast-2.amazonaws.com")
.open();
然而,抛出“无法找到实现类:com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager”。 当然,电脑是正确的,因为IntelliJ IDEA也找不到它。
我的依赖关系:
//
// aws
compile 'com.amazonaws:aws-lambda-java-core:+'
compile 'com.amazonaws:aws-lambda-java-events:+'
compile 'com.amazonaws:aws-lambda-java-log4j:+'
compile 'com.amazonaws:aws-java-sdk-dynamodb:1.10.5.1'
compile 'com.amazonaws:aws-java-sdk-ec2:+'
//
// database
// titan 1.0.0 is compatible with gremlin 3.0.2-incubating, but not yet with 3.2.0
compile 'com.thinkaurelius.titan:titan-core:1.0.0'
compile 'org.apache.tinkerpop:gremlin-core:3.0.2-incubating'
compile 'org.apache.tinkerpop:gremlin-driver:3.0.2-incubating'
什么是我的目标:已全面工作Graph对象
什么是我的问题:我没有DynamoDBStoreManager类的,我不知道是什么的依赖我加上。
我的另外一个问题是:为什么通过Cluster类连接只需要IP并且工作,但TitanFactory需要像我在EC2上的gremlin-server上使用的属性? 我不想创建第二台服务器,我只想将它作为客户端连接到它并采用Graph对象。
编辑: 添加分解之后,它建立,在输出I得到多个:
13689 [TitanID(0)(4)[0]] WARN com.thinkaurelius.titan.diskstorage.idmanagement.ConsistentKeyIDAuthority - 临时存储异常,同时获取ID块 - 在PT2.4S中重试:com.thinkaurelius.titan.diskstorage.TemporaryBackendException:在PT0.342S =>中声明了ID块[1,51)太慢,阈值为:PT0.3S
执行挂在open()方法上,所以不允许我执行任何查询。
失败:生成失败并出现异常。 *出错了: 无法解析配置':compileClasspath'的所有依赖关系。 >找不到com.amazonaws的任何匹配:DynamoDBLocal:[1.10.5.1,2.0.0)因为没有com.amazonaws的版本:DynamoDBLocal可用。 在以下位置搜索: https://repo1.maven.org/maven2/com/amazonaws/DynamoDBLocal/maven-metadata.xml https://repo1.maven.org/maven2/com/amazonaws/DynamoDBLocal/ 必需: [我的申请]> com.amazonaws:dynamodb-titan100-storage-backend:1.0.0 – spam
我基本上得到这个问题:http://stackoverflow.com/questions/35240114/dynamodblocal-in-sbt “依赖关系 – spam
”Criteria API“我的意思是现在(在Apache完成项目之后)称为GremlinPipeline - 所以使用java语法遍历图而不是查询字符串(如JPQL vs Criteria API)。 – spam