2017-09-08 7 views
0

から赤方偏移に接続するとき、私は/opt/spark-2.2.0-bin-hadoop2.7/にSPARCをインストールして、それからスパーク

pyspark --jars spark-redshift_2.10-3.0.0-preview1.jar,RedshiftJDBC42-1.2.7.1003.jar,hadoop-aws-2.7.1.jar,aws-java-sdk-1.7.4.jar 

を使用して実行のpythonシェルがフォルダのスキーマを推測することができません。

その後、私はシェルで次のコマンドを使用して、そこから読み取るしようとしています:

JDBC='jdbc:redshift://blablabla.regionblabla.redshift.amazonaws.com:5439/blabla?user=username&password=password' 

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

df = sql_context.read \ 
    .option("url", JDBC) \ 
    .option("dbtable", "table_name") \ 
    .option("tempdir", "bucket") \ 
    .load() 

そして、私は、次の取得トレースバック:

Traceback (most recent call last): 
    File "<stdin>", line 4, in <module> 
    File "/opt/spark-2.2.0-bin-hadoop2.7/python/pyspark/sql/readwriter.py", line 165, in load 
    return self._df(self._jreader.load()) 
    File "/opt/spark-2.2.0-bin-hadoop2.7/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__ 
    File "/opt/spark-2.2.0-bin-hadoop2.7/python/pyspark/sql/utils.py", line 69, in deco 
    raise AnalysisException(s.split(': ', 1)[1], stackTrace) 
pyspark.sql.utils.AnalysisException: u'Unable to infer schema for Parquet. It must be specified manually.;' 

をいくつか検索した後、私はあることを述べ、いくつかの問題と解答を見つけましたそこにデータが存在しないことが原因である可能性があります。しかし、リクエストはテーブルが空ではないことを私に示します。だから、私は接続にいくつかの問題があると思う。これを修正するには?たぶん私はスパークまたはその瓶の間違ったバージョン、またはいくつかの瓶がないことがありますか?

答えて

0

私は

sc._jsc.hadoopConfiguration().set("fs.s3.awsAccessKeyId", KEYS[0]) 
sc._jsc.hadoopConfiguration().set("fs.s3.awsSecretAccessKey", KEYS[1]) 

を使用してAWSのcredentiansを追加し、赤方偏移に、同じ資格情報を提供するオプションを追加する必要が判明:

.option('forward_spark_s3_credentials', 'true')