Sparksession错误是关于蜂巢的

问题描述 投票:0回答:1

我的操作系统是Windows 10

from pyspark.conf import SparkConf
sc = SparkContext.getOrCreate()
spark = SparkSession.builder.enableHiveSupport().getOrCreate()

这段代码给出了我的错误

Py4JJavaError Traceback(最近调用最后一次)〜\ Documents \ spark \ spark-2.1.0-bin-hadoop2.7 \ python \ pyspark \ sql \ utils.py in deco(* a,** kw)62试试: - - > 63返回f(* a,** kw)64除了py4j.protocol.Py4JJavaError为e:

get_return_value中的〜\ Documents \ spark \ spark-2.1.0-bin-hadoop2.7 \ python \ lib \ py4j-0.10.4-src.zip \ py4j \ protocol.py(answer,gateway_client,target_id,name)318“调用{0} {1} {2}时发生错误。\ n“。 - > 319格式(target_id,“。”,名称),值)320 else:

Py4JJavaError:调用o22.sessionState时发生错误。 :java.lang.IllegalArgumentException:实例化'org.apache.spark.sql.hive.HiveSessionState'时出错:at org.apache.spark.sql.SparkSession $ .org $ apache $ spark $ sql $ SparkSession $$ reflect(SparkSession) .scala:981)org.apache.spark.sql.SparkSession.sessionState $ lzycompute(SparkSession.scala:110)位于sun.reflect的org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:109)。 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中的NativeMethodAccessorImpl.invoke0(Native Method)位于sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)的java.lang.reflect.Method.invoke(方法。 java:606)at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)py4j.Gateway.invoke(Gateway.java:280)py4j。在py4j.GallwayConnection.run(Gatewa)的py4j.commands.CallCommand.execute(CallCommand.java:79)上的commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) yConnection.java:214)at java.lang.Thread.run(Thread.java:745)由sun.reflect.NativeConstructorAccessorImpl的sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)引起的java.lang.reflect.InvocationTargetException。位于org.apache.spark.sql.SparkSession的java.lang.reflect.Constructor.newInstance(Constructor.java:526)的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)中的newInstance(NativeConstructorAccessorImpl.java:57) $ .org $ apache $ spark $ sql $ SparkSession $$ reflect(SparkSession.scala:978)... 13更多引起:java.lang.IllegalArgumentException:实例化'org.apache.spark.sql.hive.HiveExternalCatalog时出错':at org.apache.spark.sql.internal.SharedState $ .org $ apache $ spark $ sql $ internal $ SharedState $$ reflect(SharedState.scala:169)at org.apache.spark.sql.internal.SharedState。 (SharedState.scala:86)org.apache.spark.SparkSession $$ anonfun $ sharedState $ 1.apply(SparkSession.scala:101)at org.apache.spark.sql.S parkSession $$ anonfun $ sharedState $ 1.apply(SparkSession.scala:101)at scala.Option.getOrElse(Option.scala:121)at org.apache.spark.sql.SparkSession.sharedState $ lzycompute(SparkSession.scala:101)在Org.apache.spark.sql.SparkSession.sharedState(SparkSession.scala:100)org.apache.spark.sql.internal.SessionState。(SessionState.scala:157)org.apache.spark.sql.hive。 HiveSessionState。(HiveSessionState.scala:32)... 18更多引起:sun.reflect.NativeConstructorAccessorImpl.newInstance0(本地方法)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)中的java.lang.reflect.InvocationTargetException )atg.apache.spark.sql.internal.SharedState $ .org $ apache中的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:526) $ spark $ sql $ internal $ SharedState $$ reflect(SharedState.scala:166)... 26更多引起:java.lang.reflect.InvocationTargetExcep sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect。 Org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:264)中的Constructor.newInstance(Constructor.java:526)位于org.apache.spark.sql.hive.HiveUtils $ .newClientForMetadata(HiveUtils) .scala:366)org.apache.spark.sql.hive.HiveUtils $ .newClientForMetadata(HiveUtils.scala:270)at org.apache.spark.sql.hive.HiveExternalCatalog。(HiveExternalCatalog.scala:65)... 31更多引起:java.lang.RuntimeException:java.lang.RuntimeException:无法在org.apache.hadoop.hive.ql.session.SessionState.start中实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient( SessionState.java:522)在org.apache.spark.sql.hive.client.HiveClientImpl。(HiveClientImpl。 scala:192)... 39更多引起:java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

我的完整代码就在这里

from pyspark.sql import SQLContext 
from pyspark.sql import SparkSession 
import findspark 
findspark.init('C:/Users/asus/Documents/spark/spark-2.1.0-bin-hadoop2.7') 
import pyspark from pyspark.conf 
import SparkConf sc = SparkContext.getOrCreate() 
spark = SparkSession.builder.enableHiveSupport().getOrCreate()
hadoop apache-spark hive pyspark spark-dataframe
1个回答
1
投票

从您发布的代码看来,您似乎是Java开发人员,或者您可能急于粘贴代码。在python中,你不像我们在Java中那样用它们的类型编写变量,即SparkContext sc = SparkContext.getOrCreate()。

此外,从Spark版本2.0+开始,您需要创建一个SparkSession对象,它是应用程序的入口点。您从此对象本身派生SparkContext。尝试创建另一个SparkContext“sc = SparkContext.getOrCreate()”会导致错误。这是因为在设计中,只有一个SparkContext可以在给定的单个JVM中运行。如果需要新的Context,则需要使用sc.stop()停止先前创建的SparkContext。

从您的堆栈跟踪和代码中可以说,我也认为您在本地测试您的应用程序并且没有在本地计算机上安装Hadoop和Hive,这会导致错误:

引发者:java.lang.RuntimeException:java.lang.RuntimeException:无法在org.apache.hadoop.hive.ql.session.SessionState.start(SessionState。)中实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient。 java:522)在......

您可以在Windows计算机上安装Hadoop和Hive,并尝试以下代码段。

from pyspark.sql import SparkSession

spark = SparkSession \
.builder \
.appName('CalculatingGeoDistances') \
.enableHiveSupport() \
.getOrCreate()

sc = spark.sparkContext
© www.soinside.com 2019 - 2024. All rights reserved.