N1QL 查询将 databricks spark 1.6 连接到 couchbase server 4.5
N1QL Query to connect databricks spark 1.6 to couchbase server 4.5
我正在尝试建立从 Databricks 到 couchbase server 4.5 的连接,然后 运行 N1QL 查询。
下面的 scala 代码将 return 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。
在 Databricks(以及通常任何交互式 Spark 云环境)中,您无需定义集群节点、存储桶或 sc 变量,而是需要设置 Spark 的配置设置,以便在设置 Databricks 集群时使用。使用高级设置选项,如下所示。
我只在 spark2.0 中使用过这种方法,所以你的情况可能会有所不同。
您也可以删除集群和存储桶变量初始化。
我正在尝试建立从 Databricks 到 couchbase server 4.5 的连接,然后 运行 N1QL 查询。
下面的 scala 代码将 return 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。
在 Databricks(以及通常任何交互式 Spark 云环境)中,您无需定义集群节点、存储桶或 sc 变量,而是需要设置 Spark 的配置设置,以便在设置 Databricks 集群时使用。使用高级设置选项,如下所示。
我只在 spark2.0 中使用过这种方法,所以你的情况可能会有所不同。