pyspark.sql.utils.IllegalArgumentException:“在Windows 10中实例化'org.apache.spark.sql.hive.HiveSessionStateBuild时出错

时间:2017-07-19 09:36:56

标签: apache-spark pyspark

我在Windows 10中安装了带有winutils的spark 2.2。当我要运行pyspark时,我正面临着下风暴

pyspark.sql.utils.IllegalArgumentException: "Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder'

我已经在tmp / hive文件夹中尝试过777命令的权限。但它现在不能正常工作

winutils.exe chmod -R 777 C:\tmp\hive

应用此问题后,问题仍然存在。我在我的Windows 10中使用pyspark 2.2。 她是火花壳的环境 enter image description here

这是pyspark shell enter image description here

请帮我弄明白 三江源

8 个答案:

答案 0 :(得分:3)

使用命令' pyspark'我遇到了同样的问题。以及' spark-shell' (对于scala)在我的mac os中使用apache-spark 2.2。基于一些研究我认为是因为我的JDK版本9.0.1与Apache-Spark不兼容。通过从Java JDK 9切换回JDK 8来解决这两个错误。

也许这对你的windows spark安装也有帮助。

答案 1 :(得分:1)

港口9000?!它必须是与Hadoop相关的东西,因为我不记得Spark的端口。我建议首先使用spark-shell来消除任何额外的“跳”,即spark-shell不需要Spark本身和Python的两个运行时。

鉴于例外,我很确定问题是你已经一些 Hive-  或者Hadoop相关配置在某处,Spark明显使用它。

“由...引起”似乎表明在创建Spark SQL时使用了9000,这是在加载Hive感知子系统的时候。

  

引起:org.apache.spark.sql.AnalysisException:java.lang.RuntimeException:java.net.ConnectException:在连接异常时,从DESKTOP-SDNSD47 / 192.168.10.143调用到0.0.0.0:9000失败:java。 net.ConnectException:拒绝连接

请查看Windows 10中的环境变量(可能在命令行上使用set命令)并删除与Hadoop相关的任何内容。

答案 2 :(得分:1)

为后代发布此答案。我遇到了同样的错误。 我解决它的方法是首先尝试spark-shell而不是pyspark。错误消息更直接。

这给了一个更好的主意;有S3访问错误。 下一个;我检查了该实例的ec2角色/实例配置文件;它具有S3管理员访问权限。

然后我在/ etc /目录下的所有conf文件中为s3://做了一个grep。 然后我发现在core-site.xml中有一个名为

的属性

<!-- URI of NN. Fully qualified. No IP.--> <name>fs.defaultFS</name> <value>s3://arvind-glue-temp/</value> </property>

然后我记得。我删除了HDFS作为默认文件系统并将其设置为S3。我从早期的AMI创建了ec2实例,忘记更新与新帐户对应的S3存储桶。

我将s3存储桶更新为当前ec2实例配置文件可访问的存储桶;它奏效了。

答案 3 :(得分:0)

要在Windows操作系统上使用Spark,您可以按照this指南。

注意:确保您已根据主机名和localhost正确解析了您的IP地址,缺乏localhost解决方案在过去已经给我们带来了问题。

此外,您应该提供完整的堆栈跟踪,因为它有助于快速调试问题并节省猜测。

如果这有帮助,请告诉我。欢呼声。

答案 4 :(得分:0)

试试这个。它对我有用!以管理员模式打开命令提示符,然后运行命令'pyspark'。这应该有助于打开一个没有错误的火花会话。

答案 5 :(得分:0)

我也遇到了Unbuntu 16.04中的错误:

raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder'

这是因为我已经运行./bin/spark-shell

所以,只需杀死spark-shell,然后重新运行./bin/pyspark

答案 6 :(得分:0)

我也遇到了MacOS10中的错误,我通过使用Java8而不是Java9来解决这个问题。

  

当Java 9是在环境中解析的默认版本时,pyspark将在下面抛出错误,您将看到名称&#39; xx&#39;尝试从shell / Jupyter访问sc,spark等时未定义错误。

您可以查看更多详细信息this link

答案 7 :(得分:0)

您必须在spark配置目录中包含hive-site.xml文件。 将端口从9000更改为9083解决了我的问题。

请确保在hive-site.xml文件中更新属性,这些文件将放置在配置单元 spark config 目录下。

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://localhost:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>   </property>

对于我在ubuntu中,hive-site.xml的位置是:

  

/家庭/ hadoop的/蜂巢/ CONF /

  

/家庭/ hadoop的/火花/ CONF /