2016-09-04 13 views
2

this postingの指示に従って、SQLalchemyのObjectsクラスで作成された「オブジェクト」という名前のテーブルを持つ既存のPostgresデータベースからデータを読み込みました。私Jupyterノートでは、私のコードは次のように最後の行の結果JDBCを使用してPostgresデータベースに接続する方法

from pyspark import SparkContext 
from pyspark import SparkConf 
from random import random 

#spark conf 
conf = SparkConf() 
conf.setMaster("local[*]") 
conf.setAppName('pyspark') 

sc = SparkContext(conf=conf) 

from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 
properties = { 
    "driver": "org.postgresql.Driver" 
} 
url = 'jdbc:postgresql://PG_USER:[email protected]_SERVER_IP/db_name' 
df = sqlContext.read.jdbc(url=url, table='objects', properties=properties) 

です:

Py4JJavaError: An error occurred while calling o25.jdbc. 
: java.lang.NullPointerException 
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:158) 
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:117) 
    at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:237) 
    at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:159) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:237) 
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 
    at py4j.Gateway.invoke(Gateway.java:280) 
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:128) 
    at py4j.commands.CallCommand.execute(CallCommand.java:79) 
    at py4j.GatewayConnection.run(GatewayConnection.java:211) 
    at java.lang.Thread.run(Thread.java:745) 

それがテーブルを解決できないようなので、それが見えます。私がデータベースに正しく接続されていることを確認するには、ここからどのようにテストしますか?

答えて

2

名前解決の問題はorg.postgresql.util.PSQLExceptionで示され、NPEにはなりません。問題の原因は実際には接続文字列であり、特にユーザーの資格情報を提供する方法です。一見それはバグのように見えますが、あなたは迅速な解決策を探している場合は、URLのプロパティを使用できます:

url = 'jdbc:postgresql://PG_SERVER_IP/db_name?user=PG_USER&password=PASSWORD' 

またはプロパティの引数:上

properties = { 
    "user": "PG_USER", 
    "password": "PASSWORD", 
    "driver": "org.postgresql.Driver" 
} 
+0

スポット - あなたに感謝を! – FullStack

関連する問題