2016-06-09 6 views
0

Die folgenden Arbeiten für mich, wenn ich den Namen der Datenbank verwenden Sie einfach:cloudant Apache-Funken Zugang Design-Dokument

database = 'databasename' 

cloudantdata_df = sqlContext.read.format("com.cloudant.spark").\ 
option("cloudant.host", host).\ 
option("cloudant.username", username).\ 
option("cloudant.password", password).\ 
load(database) 

cloudantdata_df.printSchema() 

Allerdings, wenn ich versuche, ein besonderes Design-Dokument und Ansichtsnamen zu laden wie das Format:

database = 'databasename/_design/analytics/_view/invBA' 

erhalte ich die folgende Java-Ausnahme:

Py4JJavaError: An error occurred while calling o54.load. 
: java.lang.RuntimeException: Database databasename/_design/analytics/_view/invBA request error: {"error":"method_not_allowed","reason":"Only GET,POST,HEAD allowed"} 

at com.cloudant.spark.common.JsonStoreDataAccess.getQueryResult(JsonStoreDataAccess.scala:176) 
at com.cloudant.spark.common.JsonStoreDataAccess.getMany(JsonStoreDataAccess.scala:85) 
at com.cloudant.spark.DefaultSource.create(DefaultSource.scala:114) 
at com.cloudant.spark.DefaultSource.createRelation(DefaultSource.scala:100) 
at com.cloudant.spark.DefaultSource.createRelation(DefaultSource.scala:94) 
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:158) 
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:119) 
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:109) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) 
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381) 
at py4j.Gateway.invoke(Gateway.java:259) 
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) 
at py4j.commands.CallCommand.execute(CallCommand.java:79) 
at py4j.GatewayConnection.run(GatewayConnection.java:209) 
at java.lang.Thread.run(Thread.java:785) 

gibt es eine Möglichkeit zu einem parti aussehen cular Design Dokumentansicht Name?

Antwort

0

In Github, gibt es ein Beispiel, wie Ansichten laden: https://github.com/cloudant-labs/spark-cloudant/blob/master/examples/python/CloudantDF.py#L74

Sie benötigen view Option verwenden. In Ihrem speziellen Fall wird es sein:

cloudantdata_df = sqlContext.read.format("com.cloudant.spark").\ 
option("cloudant.host", host).\ 
option("cloudant.username", username).\ 
option("cloudant.password", password).\ 
option("view","_design/analytics/_view/invBA").load(database) 
+0

Vielen Dank. Das hat funktioniert. Einige dieser Dinge sind schwer zu verstehen, da es anscheinend keine veröffentlichte API mit allen Funktionen gibt. Erwarten sie wirklich, dass die Leute sich durch alle Beispiele bohren, um herauszufinden, wie man außer den sehr einfachen alles tun kann? – webe3

+0

@ webe3 Alle API ist in Readme-Datei https://github.com/cloudant-labs/spark-cloudant/blob/master/README.md; Es gibt dort einen Abschnitt zur Konfiguration: https://github.com/cloudant-labs/spark-cloudant/blob/master/README.md#Configuration-Overview –

+0

Getting einen Fehler während load() -Funktion .. Bitte beachten Sie für mehr Einzelheiten. http://stackoverflow.com/questions/40886228/cloudant-database-not-connecting-using-spark-python –