Writing in append mode to redshift in pyspark

Viewed 736

I am trying to append a dataframe into redshift table using pyspark.

What am I doing wrong?

The table is existing and already has some data on it.

myDf.write \
.format("com.databricks.spark.redshift") \
.option("url", JDBC_REDSHIFT) \
.option('forward_spark_s3_credentials', "true") \
.option("dbtable", MY_TABLE) \
.option("tempdir","s3n://MyDir") \
.save(mode='append')

I am getting this error -

MyDir") .save(mode='append')
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 701, in save
  File "/usr/lib/spark/python/lib/py4j-0.10.6-src.zip/py4j/java_gateway.py", line 1160, in __call__
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco
pyspark.sql.utils.AnalysisException: 'Failed to find data source: com.databricks.spark.avro. Please find an Avro package at http://spark.apache.org/third-party-projects.html;'
1 Answers

Looks like you are missing the Avro package. Spark writes the dataframe to S3 in the Avro format and then loads that data into Redshift.

Related