我試圖執行流程如下: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