如何在Apache Spark预构建版本中添加像spark-csv这样的新库

时间:2015-06-10 13:13:47

标签: python apache-spark apache-spark-sql

我已经构建了Spark-csv并且能够使用以下命令从pyspark shell中使用相同的

bin/spark-shell --packages com.databricks:spark-csv_2.10:1.0.3

错误获取

>>> df_cat.save("k.csv","com.databricks.spark.csv")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/abhishekchoudhary/bigdata/cdh5.2.0/spark-1.3.1/python/pyspark/sql/dataframe.py", line 209, in save
    self._jdf.save(source, jmode, joptions)
  File "/Users/abhishekchoudhary/bigdata/cdh5.2.0/spark-1.3.1/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 538, in __call__
  File "/Users/abhishekchoudhary/bigdata/cdh5.2.0/spark-1.3.1/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value
py4j.protocol.Py4JJavaError

我应该将jar文件放在我的spark预构建设置中,以便我也可以直接从python编辑器访问spark-csv

6 个答案:

答案 0 :(得分:26)

当我使用spark-csv时,我还必须下载commons-csv jar(不确定它是否仍然相关)。两个罐子都在spark分配文件夹中。

  1. 我按照以下方式下载了罐子:

    wget http://search.maven.org/remotecontent?filepath=org/apache/commons/commons-csv/1.1/commons-csv-1.1.jar -O commons-csv-1.1.jar<br/>    
    wget http://search.maven.org/remotecontent?filepath=com/databricks/spark-csv_2.10/1.0.0/spark-csv_2.10-1.0.0.jar -O spark-csv_2.10-1.0.0.jar
    
  2. 然后用参数:

    启动了python spark shell
    ./bin/pyspark --jars "spark-csv_2.10-1.0.0.jar,commons-csv-1.1.jar"
    
  3. 并从csv文件中读取spark数据帧:

    from pyspark.sql import SQLContext
    sqlContext = SQLContext(sc)
    df = sqlContext.load(source="com.databricks.spark.csv", path = "/path/to/you/file.csv")
    df.show()
    

答案 1 :(得分:20)

另一个选择是将以下内容添加到spark-defaults.conf中:

spark.jars.packages com.databricks:spark-csv_2.11:1.2.0

答案 2 :(得分:16)

不是将jar放在任何特定文件夹中,而是使用以下参数启动pyspark shell:

bin/pyspark --packages com.databricks:spark-csv_2.10:1.0.3

这将自动加载所需的spark-csv罐。

然后执行以下操作以阅读csv文件:

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('file.csv')
df.show()

答案 3 :(得分:3)

假设尚未创建会话/上下文:

import os

os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-csv_2.10:1.3.0 pyspark-shell'

答案 4 :(得分:0)

下面的命令帮助了我 - :使用Scala 2.10版本

/anaconda

具有以下依赖关系 - :

/opt/mapr/spark/spark-1.5.2/bin/spark-shell --master local[*] --packages com.databricks:spark-csv_2.10:1.4.0

答案 5 :(得分:0)

首先找出火花的路径。例如对于pyspark

    which pyspark

它将返回路径,例如像这样 - /家庭/ ubuntu的/ bin中/ pyspark

然后根据您的火花路径更改路径来运行此命令 general-:path --packages com.databricks:spark-csv_2.10:1.0.3

    /home/ubuntu/bin/pyspark --packages com.databricks:spark-csv_2.10:1.0.3