Jdbc 齐柏林飞艇上的AWS红移驾驶员

Jdbc 齐柏林飞艇上的AWS红移驾驶员,jdbc,apache-spark,amazon-redshift,apache-zeppelin,Jdbc,Apache Spark,Amazon Redshift,Apache Zeppelin,我想用笔记本齐柏林飞艇探索我的红移数据。一个带火花的小型EMR集群正在后面运行。我正在加载databricks的spark红移库 %dep z.reset() z.load("com.databricks:spark-redshift_2.10:0.6.0") 然后 import org.apache.spark.sql.DataFrame val query = "..." val url = "..." val port=5439 val table = "..." val datab

我想用笔记本齐柏林飞艇探索我的红移数据。一个带火花的小型EMR集群正在后面运行。我正在加载databricks的spark红移库

%dep
z.reset()
z.load("com.databricks:spark-redshift_2.10:0.6.0")
然后

import org.apache.spark.sql.DataFrame

val query = "..."

val url = "..."
val port=5439
val table = "..."
val database = "..."
val user = "..."
val password = "..."

val df: DataFrame = sqlContext.read
  .format("com.databricks.spark.redshift")
  .option("url", s"jdbc:redshift://${url}:$port/$database?user=$user&password=$password")
  .option("query",query)
  .option("tempdir", "s3n://.../tmp/data")
  .load()

df.show
但是我得到了错误

java.lang.ClassNotFoundException: Could not load an Amazon Redshift JDBC driver; see the README for instructions on downloading and configuring the official Amazon driver
我添加了选项

option("jdbcdriver", "com.amazon.redshift.jdbc41.Driver")

但不是为了更好。我想我需要在某个地方指定redshift的JDBC驱动程序,就像我要传递给spark shell的驱动程序类路径一样,但是如何使用zeppelin实现这一点呢?

您可以使用zeppelin或spark,使用
%dep

当您的代码需要外部库时,您可以使用%dep解释器轻松完成以下工作,而不是下载/复制/重新启动齐柏林飞艇

  • 从Maven存储库递归加载库
  • 从本地文件系统加载库
  • 添加额外的maven存储库
  • 自动将库添加到SparkCluster(可以关闭)
后者看起来像:

%dep
// loads with all transitive dependencies from Maven repo
z.load("groupId:artifactId:version")

// or add artifact from filesystem
z.load("/path/to.jar")

根据惯例,必须在注释的第一段中

给出错误消息后,看起来您需要进行一些额外的配置。您是否真的遵循了自述文件中的说明?这不是一般的错误消息,而是由redshift JDBC驱动程序生成的错误消息;所以您已经安装了它,但它只是缺少一些配置(或其他库?)。