2016-07-27 25 views
0

Ich versuche eine Verbindung von Databricks zum Couchbase Server 4.5 herzustellen und dann eine N1QL Abfrage auszuführen.N1QL Abfrage zum Verbinden von Databricks funke 1.6 zum couchbase Server 4.5

Der folgende Scala-Code gibt 1 Datensatz zurück, scheitert jedoch bei der Einführung von N1QL. Jede Hilfe wird geschätzt.

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

Ich kann es nicht finden, aber ich glaube, dass Sie ein spezielles Backend verwenden müssen, das sie und nicht die Standard CouchDB oder MemCachedDB entwickelten. – wheaties

+0

hi, ich benutze Databricks, um alle Funkenjobs auszuführen und zu versuchen, die Daten zur weiteren Analyse durch das Databricks eco-System in den Speicher zu bringen. – Mark

Antwort

1

In Databricks (und normalerweise in einer interaktiven Spark-Cloud-Umgebung) definieren Sie nicht die Clusterknoten, Buckets oder sc-Variablen. Stattdessen müssen Sie die Konfigurationseinstellungen für Spark beim Einrichten des Databricks-Clusters festlegen. Verwenden Sie die erweiterten Einstellungen wie unten gezeigt.

Ich habe diesen Ansatz nur mit spark2.0 verwendet, so dass Ihre Laufleistung variieren kann.

enter image description here Sie können auch Ihre Cluster- und Bucket-Variableninitialisierung entfernen.

1

Sie haben einen Syntaxfehler in der N1QL Abfrage. Sie haben:

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

Sie müssen entweder die WHERE entfernen oder eine Bedingung hinzufügen.

Sie müssen auch ID zu META() ändern. ID.

+0

Dank Geraldss bist du richtig. Obwohl ich gerade den Fix durchgedrückt habe und immer noch nicht funktioniert. Ich werde den Hauptcode mit Ihren Vorschlägen aktualisieren. – Mark