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) 
+0

我找不到它,但我相信你必须使用他们开发的特殊后端,而不是标准的CouchDB或MemCachedDB。 – wheaties

+0

嗨,我正在使用databricks运行所有火花作业,并试图将数据带入内存,以便通过databricks生态系统进一步分析。 – Mark

在Databricks(和任何交互式星火云环境中通常)你不定义群集节点,水桶或SC变量,而不是你需要为星火设定的配置设置建立Databricks集群时使用。使用高级设置选项,如下所示。

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

enter image description here 您也可以删除群集和桶变量初始化。

您在N1QL查询中有语法错误。您有:

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

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

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

+0

谢谢Geraldss你是对的。虽然我刚推出了修补程序,但仍然无法正常工作。我将用您的建议更新主代码。 – Mark