idea 中运行spark 保存到hive中,由于没有配置hive信息,spark运行会默认运行内部的hive...

原因:idea 中运行spark 保存到hive中,由于没有配置hive信息,spark运行会默认运行内部的hive 

参考地址:(我尝试了,有效解决了)

https://blog.csdn.net/zgjdzwhy/article/details/71056801

http://mangocool.com/1473838702533.html

运行结果:Exception in thread "main" java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.hive.HiveSessionState':
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$reflect(SparkSession.scala:981)
    at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:110)
    at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:109)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(SparkSession.scala:878)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(SparkSession.scala:878)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
    at scala.collection.mutable.HashMap.foreach(HashMap.scala:99)
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:878)
    at MockDataGenerate$.main(MockDataGenerate.scala:167)
    at MockDataGenerate.main(MockDataGenerate.scala)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$reflect(SparkSession.scala:978)
    ... 12 more
Caused by: java.lang.IllegalArgumentException: Error while instantiating '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.<init>(SharedState.scala:86)
    at org.apache.spark.sql.SparkSession$$anonfun$sharedState$1.apply(SparkSession.scala:101)
    at org.apache.spark.sql.SparkSession$$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)
    at org.apache.spark.sql.SparkSession.sharedState(SparkSession.scala:100)
    at org.apache.spark.sql.internal.SessionState.<init>(SessionState.scala:157)
    at org.apache.spark.sql.hive.HiveSessionState.<init>(HiveSessionState.scala:32)
    ... 17 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.spark.sql.internal.SharedState$.org$apache$spark$sql$internal$SharedState$$reflect(SharedState.scala:166)
    ... 25 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:264)
    at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:358)
    at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:262)
    at org.apache.spark.sql.hive.HiveExternalCatalog.<init>(HiveExternalCatalog.scala:66)
    ... 30 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
    at org.apache.spark.sql.hive.client.HiveClientImpl.<init>(HiveClientImpl.scala:188)
    ... 38 more
Caused by: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-
    at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:612)
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554)
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)
    ... 39 more

转载于:https://my.oschina.net/u/3962987/blog/3086514

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 启动失败,可能是因为缺少必要的依赖或配置。建议检查以下几点: 1. 确认已经正确安装了Hadoop和Hive,并且配置了相关环境变量和路径。 2. 确认在项目引入了正确的SparkHive依赖,例如: ``` <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.5</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.4.5</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.11</artifactId> <version>2.4.5</version> </dependency> ``` 3. 确认在代码正确配置SparkSession和HiveContext,例如: ``` SparkSession spark = SparkSession.builder() .appName("SparkSQLWithHive") .config("spark.sql.warehouse.dir", "/user/hive/warehouse") .enableHiveSupport() .getOrCreate(); HiveContext hiveContext = new HiveContext(spark.sparkContext()); ``` 如果以上步骤都没有问题,可以尝试重新编译和运行项目,或者查看详细的错误日志以确定具体的问题。 ### 回答2: SparkSQL是一个分布式计算框架,而Hive是一个基于Hadoop的数据仓库解决方案。两者都是大数据技术非常重要的组成部分。在使用SparkSQL时,可以通过整合Hive来更好地管理和查询数据。 但是,在使用IDEA运行SparkSQL整合Hive时,可能遇到"org.apache.spark.sql.hive.hivesessionstatebuilder"错误。这个错误通常是由于缺失相关的依赖库导致的,可以通过以下解决方法进行修复: 1. 检查pom.xml文件是否存在相关依赖库,如hive-exec、hive-metastore、hive-common等。如果缺失,可以手动添加这些依赖库。 2. 检查SparkSQL和Hive的版本是否兼容。如果版本不一致,可能导致依赖库冲突,从而出现错误。可以尝试将SparkSQL和Hive的版本升级或降级到兼容的版本。 3. 检查环境变量是否正确设置。如果环境变量设置不正确,可能导致依赖库无法找到,从而出现错误。可以重新设置环境变量或者重新安装相关组件。 4. 检查配置文件是否正确设置。如果配置文件的相关参数设置不正确,可能导致依赖库无法加载,从而出现错误。可以检查配置文件的参数是否正确,并进行修改。 总之,要解决"org.apache.spark.sql.hive.hivesessionstatebuilder"错误,需要仔细排查并修复相关的问题。如果需要进一步了解SparkSQL整合Hive的使用方法,可以参考相关资料或者请教专业的技术人员。 ### 回答3: Spark SQL是Spark的一个组件,支持使用Spark进行SQL查询和处理结构化数据。而Hive是一个数据仓库软件,提供支持适用SQL的ETL、OLAP、报表和数据挖掘等数据仓库业务。在Spark使用Hive的一个重要方法就是整合Hive并使用Spark SQL进行查询和处理数据。 然而,当使用IDEA启动整合HiveSpark SQL的程序时,可能遇到报错信息:“org.apache.spark.sql.hive.HiveSessionStateBuilder”。 这个错误信息实际上是在运行程序创建SparkSession对象时出现的。SparkSession对象是Spark SQL代码的入口点,它创建一个线程池并分配资源,同时负责管理和维护Spark SQL的各种上下文信息。 报错信息的含义是Spark SQL在创建SparkSession对象时,尝试去获取HiveSessionStateBuilder对象时失败了。HiveSessionStateBuilder是在Hive创建和维护Hive的Session状态的对象,是Spark SQL整合Hive的关键类。 造成这种错误的原因可能有多种。一种可能是在程序启动前没有正确地配置Spark环境和Hive环境,导致Spark无法获取到正确的Hive配置文件或类路径。另一种可能是在代码没有正确地使用SparkSession对象或调用相关方法,导致Spark SQL无法正确地整合Hive。 解决这种问题的方法是先检查程序的环境和配置是否正确,确保SparkHive可以正确地互相调用和整合。然后在代码检查SparkSession对象的创建和使用是否正确,确保正确地调用SparkSession对象和HiveSessionStateBuilder对象。另外,也可以试着升级SparkHive版本,或者换用其他开发工具来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值