Der Fehler zu fehlenden Abhängigkeiten zurückzuführen ist.
Stellen Sie sicher, dass Sie diese JAR-Dateien in der Funken Home-Verzeichnis haben:
- Funken 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) (neuere Version, aber nicht alles, was mit ihm gearbeitet hat)
diese JAR-Dateien in $ SPARK_HOME Put/Gläser/und dann Funken
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 sollte = "/ usr/local/Keller/Apache-Funken/$ SPARK_VERSION/libexec") beginnen
Dadurch wird Spark mit allen notwendigen Abhängigkeiten ausgeführt. Beachten Sie, dass Sie auch den Authentifizierungstyp 'forward_spark_s3_credentials' = True angeben müssen, wenn Sie awsAccessKeys verwenden.
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()
Häufige Fehler danach sind:
- Redshift Connection Error: "SSL off"
- Lösung:
.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 Fehler: Wenn die Daten Entladen, z.B. nach df.show() Sie erhalten die Nachricht: "Der Bucket, auf den Sie zugreifen möchten, muss über den angegebenen Endpunkt angesprochen werden. Bitte senden Sie alle zukünftigen Anfragen an diesen Endpunkt."
- Lösung: Der Eimer & Cluster muss zum Verbinden mit Rotverschiebung
Danke, habe ich versucht, es zu ändern, aber ich habe immer noch die gleichen Fehler – Aguid