如何在DataScience Experience中使用SparkSQL连接到Cloudand / CouchDB?

时间:2017-07-20 06:37:31

标签: couchdb apache-spark-sql cloudant data-science-experience

以前通过cloudant连接器支持CouchDB:

https://github.com/cloudant-labs/spark-cloudant

但是这个项目表明它已经不再活跃了,它转移到了Apache Bahir:

http://bahir.apache.org/docs/spark/2.1.1/spark-sql-cloudant/

所以我使用以下命令在Scala笔记本中安装了JAR:

  

%AddJar   http://central.maven.org/maven2/org/apache/bahir/spark-sql-cloudant_2.11/2.1.1/spark-sql-cloudant_2.11-2.1.1.jar

然后,从python笔记本中重启内核后,我使用以下代码进行测试:

spark = SparkSession\
    .builder\
    .appName("Cloudant Spark SQL Example in Python using dataframes")\
    .config("cloudant.host","0495289b-1beb-4e6d-888e-315f36925447-bluemix.cloudant.com")\
    .config("cloudant.username", "0495289b-1beb-4e6d-888e-315f36925447-bluemix")\
    .config("cloudant.password","xxx")\
    .config("jsonstore.rdd.partitions", 8)\
    .getOrCreate()

# ***1. Loading dataframe from Cloudant db
df = spark.read.load("openspace", "org.apache.bahir.cloudant")
df.cache()
df.printSchema()
df.show()

但我明白了:

  

java.lang.ClassNotFoundException:org.apache.bahir.cloudant.DefaultSource

(gist of full log)

2 个答案:

答案 0 :(得分:2)

有一种解决方法,它应该在各种jupyther笔记本环境中运行,并不是IBM DataScience体验所独有的:

  

!pip install --upgrade pixiedust

     

导入pixiedust

     

pixiedust.installPackage(" cloudant-实验室:火花cloudant:2.0.0-s_2.11&#34)

这当然是一种解决方法,一旦发布,就会发布正式答案

编辑:

不要忘记之后重启jupyter内核

编辑24.12.18: 在没有解决方法的情况下创建了一个yt视频,请参阅评论...将在稍后阶段更新此帖子...

答案 1 :(得分:1)

下面的另一个解决方法。它已经过测试,适用于DSX Python笔记本:

import pixiedust

# Use play-json version 2.5.9. Latest version is not supported at this time.
pixiedust.installPackage("com.typesafe.play:play-json_2.11:2.5.9")
# Get the latest sql-cloudant library
pixiedust.installPackage("org.apache.bahir:spark-sql-cloudant_2.11:0")

spark = SparkSession\
  .builder\
  .appName("Cloudant Spark SQL Example in Python using dataframes")\
  .config("cloudant.host", host)\
  .config("cloudant.username", username)\
  .config("cloudant.password", password)\
  .getOrCreate()

df = spark.read.load(format="org.apache.bahir.cloudant", database="MY-DB")