私はRedshiftに単純なデータセットを書きたいPOCをやっています。Spark 2.0.1を使用してRedshiftにデータを書き込む
私は、次のしているSBTファイル:
name := "Spark_POC"
version := "1.0"
scalaVersion := "2.10.6"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "2.0.1"
libraryDependencies += "org.apache.spark" % "spark-sql_2.10" % "2.0.1"
resolvers += "jitpack" at "https://jitpack.io"
libraryDependencies += "com.databricks" %% "spark-redshift" % "3.0.0-preview1"
と、次のコード:
object Main extends App{
val conf = new SparkConf().setAppName("Hello World").setMaster("local[2]")
System.setProperty("hadoop.home.dir", "C:\\Users\\Srdjan Nikitovic\\Desktop\\scala\\hadoop")
val spark = SparkSession
.builder()
.appName("Spark 1")
.config(conf)
.getOrCreate()
val tempS3Dir = "s3n://access_key:[email protected]_location"
spark.sparkContext.hadoopConfiguration.set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "access_key")
spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "secret_access_key")
val data =
spark
.read
.csv("hello.csv")
data.write
.format("com.databricks.spark.redshift")
.option("url", "jdbc:redshift://redshift_server:5439/database?user=user_name&password=password")
.option("dbtable", "public.testSpark")
.option("forward_spark_s3_credentials",true)
.option("tempdir", tempS3Dir)
.mode("error")
.save()
}
は私がのIntelliJを通して、ローカルのWindowsマシンからコードを実行しています。
私は次のエラーを取得する:
Exception in thread "main" java.lang.ClassNotFoundException: Could not load an Amazon Redshift JDBC driver; see the README for instructions on downloading and configuring the official Amazon driver.
私は、ほぼすべての火花赤方偏移ドライバのバージョン(1.0.0、2.0.0、2.0.1、現在は3.0.0-PREVIEWで試してみました)、私はこのコードを動作させることができません。
助けが必要ですか?
私はEMR上のコードを実行していないのです、私は、実行ボタンをクリックすることで、私のラップトップ上のIntelliJを通してそれを実行しています。 これについてのご意見はありますか? –
ええ、EMRの事は単なる例です。私はIntelliJについて具体的にはわかりませんが、基本的にJVMにこのJarの位置について実行していることを伝えるだけです。 –