Scala 连接databricks spark 1.6和couchbase server 4.5的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

我正在尝试设置从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.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,你是对的。虽然我刚刚完成了修复,但仍然不起作用。我将用你的建议更新主代码。