Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用Spark 2.0.1将数据写入红移_Apache Spark_Spark Dataframe_Amazon Redshift - Fatal编程技术网

Apache spark 使用Spark 2.0.1将数据写入红移

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

我正在做一个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 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