我在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)
我该如何解决这个问题?我假设我应该添加一个包但是如何安装它以及在哪里?
答案 0 :(得分:5)
在Zeppelin中有很多方法可以添加包:
其中一个是实际更改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"
但是,假设您实际上没有访问这些配置。然后,您可以使用通过%dep解释器加载动态依赖关系(不建议使用):
%dep
z.load("com.databricks:spark-csv_2.10:1.4.0")
这将要求您在启动或重新启动解释器之前加载依赖项。
另一种方法是通过解释器依赖关系管理器添加所需的依赖关系,如以下链接所述: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