将Spark CSV依赖项添加到Zeppelin

时间:2016-11-03 16:01:22

标签: csv apache-spark pyspark apache-zeppelin

我在AWS上运行带有火花簇的EMR。 Spark版本是1.6

运行以下命令时:

proxy = sqlContext.read.load("/user/zeppelin/ProxyRaw.csv", 
                          format="com.databricks.spark.csv", 
                          header="true", 
                          inferSchema="true")

我收到以下错误:

  

Py4JJavaError:调用o162.load时发生错误。       :java.lang.ClassNotFoundException:无法找到数据源:com.databricks.spark.csv。请找到包裹   http://spark-packages.org         在org.apache.spark.sql.execution.datasources.ResolvedDataSource $ .lookupDataSource(ResolvedDataSource.scala:77)

我该如何解决这个问题?我假设我应该添加一个包但是如何安装它以及在哪里?

2 个答案:

答案 0 :(得分:5)

在Zeppelin中有很多方法可以添加包:

  1. 其中一个是实际更改conf/zeppelin-env.sh配置文件,将您需要的软件包(例如com.databricks:spark-csv_2.10:1.4.0)添加到提交选项中,因为Zeppelin使用spark-submit命令引擎盖:

    export SPARK_SUBMIT_OPTIONS="--packages com.databricks:spark-csv_2.10:1.4.0"
    
  2. 但是,假设您实际上没有访问这些配置。然后,您可以使用通过%dep解释器加载动态依赖关系(不建议使用):

    %dep
    z.load("com.databricks:spark-csv_2.10:1.4.0")
    

    这将要求您在启动或重新启动解释器之前加载依赖项。

  3. 另一种方法是通过解释器依赖关系管理器添加所需的依赖关系,如以下链接所述:Dependency Management for Interpreter

答案 1 :(得分:0)

那么,

首先,您需要从Maven存储库下载CSV liv:

https://mvnrepository.com/artifact/com.databricks/spark-csv_2.10/1.5.0

检查您正在使用的scala版本。如果是2.10或2.11。

当你把spark-shell称为spark-submit或pyspark时。甚至你的Zeppelin你需要添加选项--jars和lib的路径。

像这样:

pyspark --jars /path/to/jar/spark-csv_2.10-1.5.0.jar

你可以像上面那样打电话。

您可以在此处查看其他近似问题:How to add third party java jars for use in pyspark