的錯誤是由於缺少依賴。
請確認您有火花的主目錄這些jar文件:
- 火花redshift_2.10-3.0.0-preview1.jar
- RedshiftJDBC41-1.1.10.1010.jar
- 的Hadoop -aws-2.7.1.jar
- aws-java-sdk-1.7.4.jar
- (aws-java-sdk-s3-1.11.60.jar)(較新的版本,但不是所有的東西都可以使用它)
把這些jar文件在$ SPARK_HOME /瓶/然後啓動火花
pyspark --jars $SPARK_HOME/jars/spark-redshift_2.10-3.0.0-preview1.jar,$SPARK_HOME/jars/RedshiftJDBC41-1.1.10.1010.jar,$SPARK_HOME/jars/hadoop-aws-2.7.1.jar,$SPARK_HOME/jars/aws-java-sdk-s3-1.11.60.jar,$SPARK_HOME/jars/aws-java-sdk-1.7.4.jar
(SPARK_HOME應該是= 「在/ usr /本地/庫/ Apache的火花/ $ SPARK_VERSION/libexec目錄」)
這將運行Spark以及所有必需的依賴項。請注意,如果您使用的是awsAccessKeys,您還需要指定認證類型'forward_spark_s3_credentials'= True。
from pyspark.sql import SQLContext
from pyspark import SparkContext
sc = SparkContext(appName="Connect Spark with Redshift")
sql_context = SQLContext(sc)
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", <ACCESSID>)
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", <ACCESSKEY>)
df = sql_context.read \
.format("com.databricks.spark.redshift") \
.option("url", "jdbc:redshift://example.coyf2i236wts.eu-central- 1.redshift.amazonaws.com:5439/agcdb?user=user&password=pwd") \
.option("dbtable", "table_name") \
.option('forward_spark_s3_credentials',True) \
.option("tempdir", "s3n://bucket") \
.load()
常見錯誤之後有:
- 紅移連接錯誤: 「SSL斷開」
- 解決方案:
.option("url", "jdbc:redshift://example.coyf2i236wts.eu-central- 1.redshift.amazonaws.com:5439/agcdb?user=user&password=pwd?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory")
- S3錯誤:當卸載數據,例如在df之後。show()會得到以下消息:「您嘗試訪問的存儲桶必須使用指定的端點進行尋址,請將所有未來的請求發送到此端點。」
謝謝,我試圖改變它,但我仍然有同樣的錯誤 – Aguid