如何在 Apache Spark 预构建版本中添加任何新库,如 spark-csv
How to add any new library like spark-csv in Apache Spark prebuilt version
我已经构建了 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
。
当时我用的是spark-csv,还得下载commons-csv
jar(不确定是否还有用)。两个 jar 都在 spark 分发文件夹中。
我下载的 jar 如下:
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
然后使用以下参数启动 python spark shell:
./bin/pyspark --jars "spark-csv_2.10-1.0.0.jar,commons-csv-1.1.jar"
并从 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()
不是将 jars 放在任何特定文件夹中,一个简单的修复方法是使用以下参数启动 pyspark shell:
bin/pyspark --packages com.databricks:spark-csv_2.10:1.0.3
这将自动加载所需的 spark-csv jar。
然后执行以下操作来读取 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()
另一种选择是将以下内容添加到您的 spark-defaults.conf:
spark.jars.packages com.databricks:spark-csv_2.11:1.2.0
下面的命令帮助了我 -: 使用 Scala 2.10 版本
/opt/mapr/spark/spark-1.5.2/bin/spark-shell --master local[*] --packages com.databricks:spark-csv_2.10:1.4.0
具有以下依赖关系 -:
com.databricks#spark-csv_2.10;1.4.0!spark-csv_2.10.jar (2043ms)
org.apache.commons#commons-csv;1.1!commons-csv.jar (419ms)
com.univocity#univocity-parsers;1.5.1!univocity-parsers.jar (1481ms)
假设 session/context 尚未创建:
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-csv_2.10:1.3.0 pyspark-shell'
首先找出火花的路径。例如 pyspark
which pyspark
它会 return 你的路径例如这样 -
/home/ubuntu/bin/pyspark
然后 运行 通过根据您的 spark 路径更改路径来执行此命令
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
我已经构建了 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
。
当时我用的是spark-csv,还得下载commons-csv
jar(不确定是否还有用)。两个 jar 都在 spark 分发文件夹中。
我下载的 jar 如下:
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
然后使用以下参数启动 python spark shell:
./bin/pyspark --jars "spark-csv_2.10-1.0.0.jar,commons-csv-1.1.jar"
并从 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()
不是将 jars 放在任何特定文件夹中,一个简单的修复方法是使用以下参数启动 pyspark shell:
bin/pyspark --packages com.databricks:spark-csv_2.10:1.0.3
这将自动加载所需的 spark-csv jar。
然后执行以下操作来读取 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()
另一种选择是将以下内容添加到您的 spark-defaults.conf:
spark.jars.packages com.databricks:spark-csv_2.11:1.2.0
下面的命令帮助了我 -: 使用 Scala 2.10 版本
/opt/mapr/spark/spark-1.5.2/bin/spark-shell --master local[*] --packages com.databricks:spark-csv_2.10:1.4.0
具有以下依赖关系 -:
com.databricks#spark-csv_2.10;1.4.0!spark-csv_2.10.jar (2043ms)
org.apache.commons#commons-csv;1.1!commons-csv.jar (419ms)
com.univocity#univocity-parsers;1.5.1!univocity-parsers.jar (1481ms)
假设 session/context 尚未创建:
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-csv_2.10:1.3.0 pyspark-shell'
首先找出火花的路径。例如 pyspark
which pyspark
它会 return 你的路径例如这样 - /home/ubuntu/bin/pyspark
然后 运行 通过根据您的 spark 路径更改路径来执行此命令 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