Apache spark 使用Spark 2.0.1将数据写入红移
我正在做一个POC,我想写一些简单的数据集到红移 我有以下sbt文件: 和以下代码:Apache spark 使用Spark 2.0.1将数据写入红移,apache-spark,spark-dataframe,amazon-redshift,Apache Spark,Spark Dataframe,Amazon Redshift,我正在做一个POC,我想写一些简单的数据集到红移 我有以下sbt文件: 和以下代码: 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
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:secret_access_key@bucket_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计算机运行代码
我得到以下错误:
线程“main”java.lang.ClassNotFoundException中出现异常:无法加载Amazon Redshift JDBC驱动程序;有关下载和配置官方Amazon驱动程序的说明,请参阅自述文件
我已经尝试了几乎所有版本的Spark红移驱动程序(1.0.0、2.0.0、2.0.1和现在的3.0.0-PREVIEW),但我无法让这段代码正常工作
有什么帮助吗?您首先需要下载 然后,您必须在运行此代码的环境中告诉Spark。例如,对于在EMR上运行的
火花壳
:
spark-shell … --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC41.jar
我不是在EMR上运行代码,我是通过我的笔记本电脑上的Intellij运行代码,方法是单击run按钮。你知道吗?是的,电子病历只是一个例子。我不知道IntelliJ的具体情况,但基本上你只需要告诉JVM它正在运行这个jar的位置。我使用了这个jar,但仍然得到一个异常
java.lang.ClassNotFoundException:找不到数据源:com.databricks.spark.redshift
。也许建议的罐子不够?
spark-shell … --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC41.jar