N1QL查询连接databricks火花1.6到couchbase服务器4.5
问题描述:
我想建立一个从Databricks连接到couchbase服务器4.5,然后运行N1QL查询。N1QL查询连接databricks火花1.6到couchbase服务器4.5
下面的scala代码会返回1条记录,但在引入N1QL时会失败。任何帮助表示赞赏。
import com.couchbase.client.java.CouchbaseCluster;
import scala.collection.JavaConversions._;
import com.couchbase.client.java.query.Select.select;
import com.couchbase.client.java.query.dsl.Expression;
import com.couchbase.client.java.query.Query
// Connect to a cluster on localhost
val cluster = CouchbaseCluster.create("http://**************")
// Open the default bucket
val bucket = cluster.openBucket("travel-sample", "password");
// Read it back out
//val streamsense = bucket.get("airline_1004546") - Works and returns one record
// Create a DataFrame with schema inference
val ev = sql.read.couchbase(schemaFilter = EqualTo("type", "airline"))
//Show the inferred schema
ev.printSchema()
//query using the data frame
ev
.select("id", "type")
.show(10)
//issue sql query for the same data (N1ql)
val query = "SELECT type, meta().id FROM `travel-sample` LIMIT 10"
sc
.couchbaseQuery(N1qlQuery.simple(query))
.collect()
.foreach(println)
答
您在N1QL查询中有语法错误。您有:
val query = "SELECT type, id FROM `travel-sample` WHERE LIMIT 10"
您需要删除WHERE或添加条件。
您还需要将id更改为META()。id。
+0
谢谢Geraldss你是对的。虽然我刚推出了修补程序,但仍然无法正常工作。我将用您的建议更新主代码。 – Mark
我找不到它,但我相信你必须使用他们开发的特殊后端,而不是标准的CouchDB或MemCachedDB。 – wheaties
嗨,我正在使用databricks运行所有火花作业,并试图将数据带入内存,以便通过databricks生态系统进一步分析。 – Mark