2016-06-09 56 views
0

以下爲我的作品時,我只是用數據庫名稱:cloudant Apache的火花訪問設計文件

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() 

然而,當我嘗試使用格式像加載特定的設計文檔和視圖名稱:

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

我得到以下Java異常:

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) 

有沒有一種方式來看待一個漢邦cular設計文檔視圖名稱?

回答

0

在github上,有一個例子,如何加載的觀點:https://github.com/cloudant-labs/spark-cloudant/blob/master/examples/python/CloudantDF.py#L74

您需要使用view選項。 在您的具體情況下,它將是:

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

非常感謝。這工作。其中有些東西很難弄清楚,因爲似乎沒有出版過所有功能的api。他們是否真的期望人們挖掘所有的例子來弄清楚除了基本的東西之外怎麼做? – webe3

+0

@ webe3所有的API都在自述文件中https://github.com/cloudant-labs/spark-cloudant/blob/master/README.md;有一個部分有配置:https://github.com/cloudant-labs/spark-cloudant/blob/master/README.md#Configuration-Overview –

+0

gettting一個錯誤,同時load()函數..請參閱更多細節。 http://stackoverflow.com/questions/40886228/cloudant-database-not-connecting-using-spark-python –

相關問題