2016-11-03 58 views
2

我在AWS上運行帶Spark集羣的EMR。 星火版本是1.6將Spark CSV依賴關係添加到Zeppelin

當運行folllowing命令:

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

我得到以下錯誤:

Py4JJavaError: An error occurred while calling o162.load. : java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv. Please find packages at http://spark-packages.org at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.lookupDataSource(ResolvedDataSource.scala:77)

我怎樣才能解決這個問題?我假設我應該添加一個包,但是如何安裝它並在哪裏?

+0

請接受關閉該問題的答案! – eliasah

回答

0

好,

首先,你需要從Maven倉庫下載CSV LIV:

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

檢查是否正在使用的斯卡拉版本。如果是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

+0

如何使用您建議的方法將齊柏林飛艇添加到飛艇中? – eliasah

+0

您可以將args添加到您的Zeppelin配置中,您可以像命令行一樣添加--jar的參數。看到這裏:https://zeppelin.apache.org/docs/latest/interpreter/spark.html#configuration –

4

有很多的方式在齊柏林添加包:

  1. 其中之一就是要真正改變conf/zeppelin-env.sh配置文件中添加需要的軟件包例如com.databricks:spark-csv_2.10:1.4.0在你的情況下提交選項自從Zeppelin使用​​命令之下:

    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

相關問題