Jdbc 齐柏林飞艇上的AWS红移驾驶员
我想用笔记本齐柏林飞艇探索我的红移数据。一个带火花的小型EMR集群正在后面运行。我正在加载databricks的spark红移库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
%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驱动程序生成的错误消息;所以您已经安装了它,但它只是缺少一些配置(或其他库?)。