Scala 连接databricks spark 1.6和couchbase server 4.5的N1QL查询
我正在尝试设置从Databricks到couchbase server 4.5的连接,然后运行N1QL查询 下面的scala代码将返回1条记录,但在引入N1QL时失败。感谢您的帮助Scala 连接databricks spark 1.6和couchbase server 4.5的N1QL查询,scala,couchbase,n1ql,databricks,Scala,Couchbase,N1ql,Databricks,我正在尝试设置从Databricks到couchbase server 4.5的连接,然后运行N1QL查询 下面的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.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.在Databricks(以及通常的任何交互式Spark云环境)中,您不需要定义群集节点、存储桶或sc变量,而是需要设置Spark在设置Databricks群集时使用的配置设置。使用高级设置选项,如下所示
我只在spark2.0中使用过这种方法,因此您的里程数可能会有所不同
您也可以删除集群和bucket变量初始化。我找不到,但我相信您必须使用他们开发的特殊后端,而不是标准的CouchDB或MemCachedDB.hi,我正在使用databricks运行所有spark作业,并试图通过databricks生态系统将数据带入内存以进行进一步分析。谢谢Geraldss,你是对的。虽然我刚刚完成了修复,但仍然不起作用。我将用你的建议更新主代码。