Python 在PyCharm IDE中添加spark csv包

Python 在PyCharm IDE中添加spark csv包,python,apache-spark,pycharm,pyspark,spark-csv,Python,Apache Spark,Pycharm,Pyspark,Spark Csv,我已经成功地在python独立模式下通过 $ --packages com.databricks:spark-csv_2.10:1.4.0 在运行上述命令时,它会在此位置创建两个文件夹(JAR和缓存) C:\Users\Mahima\.ivy2 里面有两个文件夹。其中一个包含这些jar文件:org.apache.commons_commons-csv-1.1.jar、com.univocity_univocity-parsers-1.5.1.jar、com.databricks_spark

我已经成功地在python独立模式下通过

$ --packages com.databricks:spark-csv_2.10:1.4.0

在运行上述命令时,它会在此位置创建两个文件夹(JAR和缓存)

C:\Users\Mahima\.ivy2
里面有两个文件夹。其中一个包含这些jar文件:org.apache.commons_commons-csv-1.1.jar、com.univocity_univocity-parsers-1.5.1.jar、com.databricks_spark-csv_2.10-1.4.0.jar

我想在PyCharm(Windows 10)中加载此库,该库已设置为运行Spark程序。因此,我将.ivy2文件夹添加到项目解释器路径中。 我得到的主要错误是:

An error occurred while calling o22.load.
: java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv. Please find packages at http://spark-packages.org
完整的错误日志如下所示:

16/06/27 12:54:02 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Traceback (most recent call last):
 File "C:/Users/Mahima/PycharmProjects/wordCount/wordCount.py", line 10, in <module>
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('flight.csv')
File "C:\spark-1.6.1-bin-hadoop2.4\python\pyspark\sql\readwriter.py", line 137, in load
return self._df(self._jreader.load(path))
File "C:\spark-1.6.1-bin-hadoop2.4\python\lib\py4j-0.9-src.zip\py4j\java_gateway.py", line 813, in __call__
File "C:\spark-1.6.1-bin-hadoop2.4\python\pyspark\sql\utils.py", line 45, in deco
return f(*a, **kw)
File "C:\spark-1.6.1-bin-hadoop2.4\python\lib\py4j-0.9-src.zip\py4j\protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o22.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)
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:102)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:119)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381)
at py4j.Gateway.invoke(Gateway.java:259)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:209)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.databricks.spark.csv.DefaultSource
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$$anonfun$4$$anonfun$apply$1.apply(ResolvedDataSource.scala:62)
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$$anonfun$4$$anonfun$apply$1.apply(ResolvedDataSource.scala:62)
at scala.util.Try$.apply(Try.scala:161)
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$$anonfun$4.apply(ResolvedDataSource.scala:62)
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$$anonfun$4.apply(ResolvedDataSource.scala:62)
at scala.util.Try.orElse(Try.scala:82)
at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.lookupDataSource(ResolvedDataSource.scala:62)
... 14 more


Process finished with exit code 1
16/06/27 12:54:02警告NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
回溯(最近一次呼叫最后一次):
文件“C:/Users/Mahima/PycharmProjects/wordCount/wordCount.py”,第10行,在
df=sqlContext.read.format('com.databricks.spark.csv')。选项(header='true')。加载('flight.csv'))
文件“C:\spark-1.6.1-bin-hadoop2.4\python\pyspark\sql\readwriter.py”,第137行,已加载
返回self.\u df(self.\u jreader.load(路径))
文件“C:\spark-1.6.1-bin-hadoop2.4\python\lib\py4j-0.9-src.zip\py4j\java\u gateway.py”,第813行,在\uu调用中__
文件“C:\spark-1.6.1-bin-hadoop2.4\python\pyspark\sql\utils.py”,第45行,deco格式
返回f(*a,**kw)
文件“C:\spark-1.6.1-bin-hadoop2.4\python\lib\py4j-0.9-src.zip\py4j\protocol.py”,第308行,在get\u return\u值中
py4j.protocol.Py4JJavaError:调用o22.load时出错。
:java.lang.ClassNotFoundException:未能找到数据源:com.databricks.spark.csv。请在以下网址查找包裹:http://spark-packages.org
位于org.apache.spark.sql.execution.datasources.resolvedatasource$.lookUpdateSource(resolvedatasource.scala:77)
位于org.apache.spark.sql.execution.datasources.resolvedatasource$.apply(resolvedatasource.scala:102)
位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:119)
位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:109)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231)
位于py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381)
在py4j.Gateway.invoke处(Gateway.java:259)
位于py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
在py4j.commands.CallCommand.execute(CallCommand.java:79)
在py4j.GatewayConnection.run处(GatewayConnection.java:209)
位于java.lang.Thread.run(未知源)
原因:java.lang.ClassNotFoundException:com.databricks.spark.csv.DefaultSource
位于java.net.URLClassLoader$1.run(未知源)
位于java.net.URLClassLoader$1.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
在org.apache.spark.sql.execution.datasources.resolvedatasource$$anonfun$4$$anonfun$apply$1.apply(resolvedatasource.scala:62)
在org.apache.spark.sql.execution.datasources.resolvedatasource$$anonfun$4$$anonfun$apply$1.apply(resolvedatasource.scala:62)
在scala.util.Try$.apply处(Try.scala:161)
位于org.apache.spark.sql.execution.datasources.resolvedatasource$$anonfun$4.apply(resolvedatasource.scala:62)
位于org.apache.spark.sql.execution.datasources.resolvedatasource$$anonfun$4.apply(resolvedatasource.scala:62)
在scala.util.Try.orElse(Try.scala:82)
位于org.apache.spark.sql.execution.datasources.resolvedatasource$.lookUpdateSource(resolvedatasource.scala:62)
... 14多
进程已完成,退出代码为1
我已经将JAR添加到项目解释器路径中。我哪里做错了?请提出一些解决办法。 提前感谢

  • 控制台上的sqlContext.read.format('com.databricks.spark.csv')在您对其执行正确命令之前,不能保证该包已实际安装。事实上,这个命令

    sqlContext.read.format('com.dummy.csv') 
    
也不会返回任何错误

  • 您可以将包添加到spark上下文中

    sc.addPyFile("com.databricks_spark-csv_2.10-1.4.0.jar")
    
  • 您可以在一行中打开csv文件,而无需软件包

    sc.textFile("file.csv").map(lambda line: line.split(",")).toDF
    

解决方案是添加一个名为“PYSPARK\u SUBMIT\u ARGS”的环境变量,并将其值设置为“-packages com.databricks:spark-csv\u 2.10:1.4.0 PYSPARK shell”。很好。

谢谢您的回复。是,在控制台上运行以下命令:sqlContext.read.format('com.databricks.spark.csv')。正如您所指出的,我尝试使用sc.addPyFile添加jar文件,但我仍然面临相同的错误(调用o25.load时发生错误:java.lang.ClassNotFoundException:找不到数据源:com.databricks.spark.csv。)我读了这么多关于这个问题的主题,没有一个指向这个问题的简单解决方案。你是救生员,伙计!