2016-07-12 3 views
0

私はIBM BluemixのサービスとしてSpark経由でアクセスしようとしているpostgresデータベースにデータを持っています(pythonノートブックを使用しています)。ここに私のコードは次のとおりです。Compose PostgreSQLデータベースのデータにSparkサービスとしてアクセスするBluemixのPythonノート

from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 

df = sqlContext.load(source="jdbc",\ 
       url="jdbc:postgresql://[publichost]:[port]/compose",\ 
       dbtable="[tablename]") 
df.take(2) 

私は(DF =ラインの間に)取得していますエラーは次のとおりです。

Py4JJavaError: An error occurred while calling o42.load. 
: java.sql.SQLException: No suitable driver found for jdbc:postgresql://host:port/compose 
at java.sql.DriverManager.getConnection(DriverManager.java:700) 
at java.sql.DriverManager.getConnection(DriverManager.java:219) 
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$$anonfun$getConnector$1.apply(JDBCRDD.scala:188) 
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$$anonfun$getConnector$1.apply(JDBCRDD.scala:181) 
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:121) 
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:91) 
at org.apache.spark.sql.execution.datasources.jdbc.DefaultSource.createRelation(DefaultSource.scala:60) 
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:158) 
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:119) 
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) 

私は、このドライバを更新することはできますか?どんなアドバイスや実例も大いにありがとう!

+0

ドライバの変更やインストール/アンインストールが可能です。私はこれをDB2ドライバhttps://github.com/data-henrik/CeBIT-Weather/blob/master/CeBIT_Weather2.ipynb –

答えて

1

これは、postgresqlドライバがsparkサービスインスタンスにデフォルトでインストールされていないために発生します。

最初に追加する必要があります。

Change the kernel to Scala from the menu to execute below statement, you only need to execute this once per spark instance and then subsequent use postgres driver irrespective of kernel type(Python,Scala,R), you can simply import it 
In [1]: 
%Addjar -f https://jdbc.postgresql.org/download/postgresql-9.4.1207.jre7.jar 
Starting download from https://jdbc.postgresql.org/download/postgresql-9.4.1207.jre7.jar 
Finished download of postgresql-9.4.1207.jre7.jar 
In [5]: 
#Now change the kernel back to Python 
In [1]: 
from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 
In [3]: 
#Ignore the Connection Error which is because of the invalid connection details 
#Just simply change the publichost to your hostname and port number and databasename and 
#tablename 
In [4]: 
df = sqlContext.load(source="jdbc",\ 
       url="jdbc:postgresql://[publichost]:[port]/databasename",\ 
       dbtable="[tablename]") 

完全インポート可能なノートブックは https://github.com/charles2588/bluemixsparknotebooks/raw/master/Python/python_postgres.ipynb

おかげで、 チャールズの下を参照してください。

関連する問題