1

我正在尝试建立从 Databricks 到 couchbase 服务器 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)
4

2 回答 2

2

在 Databricks(以及通常的任何交互式 Spark 云环境)中,您无需定义集群节点、存储桶或 sc 变量,而是需要设置 Spark 的配置设置,以便在设置 Databricks 集群时使用。使用如下所示的高级设置选项。

我只在 spark2.0 中使用了这种方法,所以你的里程可能会有所不同。

在此处输入图像描述 您也可以删除集群和存储桶变量初始化。

于 2016-11-02T17:57:03.667 回答
1

N1QL 查询中有语法错误。你有:

val query = "SELECT type, id  FROM `travel-sample` WHERE LIMIT 10"

您需要删除 WHERE,或添加条件。

您还需要将 id 更改为 META().id。

于 2016-07-27T16:20:31.280 回答