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

Abh*_*ary 26 python apache-spark apache-spark-sql

我已经构建了Spark-csv,并且可以使用以下命令从pyspark shell中使用它

bin/spark-shell --packages com.databricks:spark-csv_2.10:1.0.3
Run Code Online (Sandbox Code Playgroud)

得到错误

>>> 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
Run Code Online (Sandbox Code Playgroud)

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

小智 26

当我使用spark-csv时,我也不得不下载commons-csvjar(不确定它是否仍然相关).两个罐子里面都有火花分布文件夹.

  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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后用参数启动python spark shell:

    ./bin/pyspark --jars "spark-csv_2.10-1.0.0.jar,commons-csv-1.1.jar"
    
    Run Code Online (Sandbox Code Playgroud)
  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()
    
    Run Code Online (Sandbox Code Playgroud)


ken*_*ntt 20

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

spark.jars.packages com.databricks:spark-csv_2.11:1.2.0
Run Code Online (Sandbox Code Playgroud)


Jim*_*mmy 16

而不是将jar放在任何特定的文件夹中,一个简单的解决方法是使用以下参数启动pyspark shell:

bin/pyspark --packages com.databricks:spark-csv_2.10:1.0.3
Run Code Online (Sandbox Code Playgroud)

这将自动加载所需的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()
Run Code Online (Sandbox Code Playgroud)

  • SparkConf().set("spark.jars.packages","com.databricks:sparkcsv_2.10:1.0.3")..我知道为时已晚,无法回复@dnlbrky (4认同)
  • 当我在创建Spark上下文之前使用`SparkConf().set("key","value")`从IPython设置配置参数时,我将如何修改你的答案?我没有看到"包"键,并且将"spark.jars"设置为包含下载的jar的路径不起作用. (2认同)