Spark SQL for JDBC从其他数据库获取数据

时间:2015-03-24 13:59:25

标签: python jdbc apache-spark

随着新的spark 1.3发布,我很高兴尝试使用JDBC函数(在Python中)。但是,我认为在遇到错误时,帮助不是可选的:

这是我做的:

  1. 我开始使用scala下的典型火花壳,如

    SPARK_CLASSPATH=/jdbc_path/some-jdbc-driver.jar bin/spark-shell
    

    结果在INFO中:使用--driver-class-path(我跟着)

  2. 在PySpark REPEL中,导入了相关的包,我使用了

    df2 = sqlCtx.load("jdbc", url="jdbc:ncluster://serveraddress:2406/database?user=myid&password=mypass", driver="com.asterdata.ncluster.Driver", dbtable="mytable")
    
  3. 但错误消息一直显示没有spark_home / jdbc这样的文件。

    我可以知道:

    1. 设置额外的外部课程时,我怎么知道它包含在内?
    2. 只是一个简单的JDBC链接到其他数据库,有没有完整的JDBC示例?

2 个答案:

答案 0 :(得分:0)

  1. 您可以在http://localhost:4040/environment/转到Spark环境用户界面,检查是否包含了这些广告。

  2. 我遇到了同样的问题(2),试试:

    df2 = sqlCtx.load(source="jdbc", url="jdbc:ncluster://serveraddress:2406/database?user=myid&password=mypass", driver="com.asterdata.ncluster.Driver", dbtable="mytable")
    
  3. 让我知道它是否有效。在我的情况下,它工作,但我仍然无法与我的数据库建立连接,因为spark无法识别我的jar文件。这听起来很奇怪,但它正以某种方式发生。

    如果您能够连接,请告诉我。

答案 1 :(得分:0)

不是设置SPARK_CLASSPATH(至少在Spark 1.5.2上说它已被弃用),请尝试关注this answer并修改conf/spark-defaults.conf以下两行。

spark.driver.extraClassPath /path/to/my.jar
spark.executor.extraClassPath /path/to/my.jar

我不需要使用--driver-class-path,因为在Spark启动时默认会加载jar。