Hive on Spark入门设置

http://www.aboutyun.com/thread-18547-1-1.html

先说明一下,这里说的Hive on Spark是Hive跑在Spark上,用的是Spark执行引擎,而不是MapReduce,和Hive on Tez的道理一样。

  从Hive 1.1版本开始,Hive on Spark已经成为Hive代码的一部分了,并且在spark分支上面,可以看这里https://github.com/apache/hive/tree/spark,并会定期的移到master分支上面去。关于Hive on Spark的讨论和进度,可以看这里https://issues.apache.org/jira/browse/HIVE-7292

  要想在Hive中使用Spark执行引擎,第一步当前就是环境设置,我们需要在Hive启动的时候加载spark-assembly-1.4.1-hadoop2.2.0.jar,最简单的方法是把spark-assembly-1.4.1-hadoop2.2.0.jar包直接拷贝到$HIVE_HOME/lib目录下。


  不过在Hive的官方文档上面还提供了两种加载Spark相关包的方法:

[Bash shell]  纯文本查看  复制代码
?
1
hive> set spark.home= /location/to/sparkHome ;


或者在启动Hive之前加上环境变量
[Bash shell]  纯文本查看  复制代码
?
1
export SPARK_HOME= /home/iteblog/spark-1 .4.1-bin-2.2.0


这两种方法我都试过,都出现了一下异常:
[Bash shell]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
java.lang.NoClassDefFoundError: io /netty/channel/EventLoopGroup
         at org.apache.hive.spark.client.SparkClientFactory.initialize(SparkClientFactory.java:56)
         at org.apache.hadoop.hive.ql. exec .spark.session.SparkSessionManagerImpl.setup(SparkSessionManagerImpl.java:86)
         at org.apache.hadoop.hive.ql. exec .spark.session.SparkSessionManagerImpl.getSession(SparkSessionManagerImpl.java:102)
         at org.apache.hadoop.hive.ql. exec .spark.SparkUtilities.getSparkSession(SparkUtilities.java:112)
         at org.apache.hadoop.hive.ql. exec .spark.SparkTask.execute(SparkTask.java:101)
         at org.apache.hadoop.hive.ql. exec .Task.executeTask(Task.java:160)
         at org.apache.hadoop.hive.ql. exec .TaskRunner.runSequential(TaskRunner.java:88)
         at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1653)
         at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1412)
         at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1195)
         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)
         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
         at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:213)
         at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:165)
         at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:376)
         at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:736)
         at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
         at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:606)
         at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.ClassNotFoundException: io.netty.channel.EventLoopGroup
         at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
         ... 23 more
FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql. exec .spark.SparkTask. io /netty/channel/EventLoopGroup



还有一点需要注意,Hive on Spark模式用到的Spark assembly包必须是没有用-phive参数编译的,否则出现以下异常:
[Bash shell]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
15 /08/28 11:00:32 ERROR yarn.ApplicationMaster: User class threw exception: java.lang.NoSuchFieldError: SPARK_RPC_CLIENT_CONNECT_TIMEOUT
java.lang.NoSuchFieldError: SPARK_RPC_CLIENT_CONNECT_TIMEOUT
         at org.apache.hive.spark.client.rpc.RpcConfiguration.<clinit>(RpcConfiguration.java:46)
         at org.apache.hive.spark.client.RemoteDriver.<init>(RemoteDriver.java:146)
         at org.apache.hive.spark.client.RemoteDriver.main(RemoteDriver.java:556)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:606)
         at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:483)
15 /08/28 11:00:32 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 15, (reason: User
  class threw exception: java.lang.NoSuchFieldError: SPARK_RPC_CLIENT_CONNECT_TIMEOUT)
15 /08/28 11:00:42 ERROR yarn.ApplicationMaster: SparkContext did not initialize after waiting for
100000 ms. Please check earlier log output for errors. Failing the application.
15 /08/28 11:00:42 INFO yarn.ApplicationMaster: Unregistering ApplicationMaster with FAILED
(diag message: User class threw exception: java.lang.NoSuchFieldError: SPARK_RPC_CLIENT_CONNECT_TIMEOUT)
15 /08/28 11:00:42 INFO yarn.ApplicationMaster: Deleting staging directory .sparkStaging /application_1440152921247_0079
15 /08/28 11:00:42 INFO util.Utils: Shutdown hook called

在Hive中配置好环境之后,我们可以启动Hive了,如下:
[Bash shell]  纯文本查看  复制代码
?
1
2
[[url=mailto:iteblog@www.iteblog.com]iteblog@www.iteblog.com[ /url ] hive]$ sudo -uiteblog bin /hive
hive>



这些和正常启动Hive没什么区别。下面才是最重要的,我们需要在Hive中设置任务的执行引擎,可以通过hive.execution.engine参数进行设置。目前Hive支持三种执行引擎:mr、tez、spark。因为我们需要使用Spark执行引擎,所以需要将hive.execution.engine设置为spark,具体如下:
[Bash shell]  纯文本查看  复制代码
?
1
hive> set hive.execution.engine=spark;


其实,我们还可以在Hive中设置很多关于Spark的配置,诸如spark.eventLog.enabled、spark.executor.memory以及spark.executor.instances等。如下:

[Bash shell]  纯文本查看  复制代码
?
1
2
3
4
5
6
hive> set spark.eventLog.enabled= true ;
hive> set spark.eventLog. dir =hdfs: //iteblog/spark-jobs/eventLog ;
hive> set spark.executor.memory=4g;
hive> set spark.executor.cores=2;
hive> set spark.executor.instances=40;
hive> set spark.serializer=org.apache.spark.serializer.KryoSerializer;


这样设置是不是很麻烦?我们可以在$HIVE_HOME/conf里面创建spark-defaults.conf文件,然后加上需要设置的配置,最后设置到Hive启动的classpath环境中即可。当然,你完全可以将这些关于Spark的设置弄到hive-site.xml文件中,这样更方便。

设置好了Spark引擎之后,我们来执行一个SQL:

[Bash shell]  纯文本查看  复制代码
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
hive> select count(*) from ewaplog limit 10;
Query ID = datadev_20150828112049_3a5a6d78-83d9-4cea-b5e2-6bd2d8836d01
Total jobs = 1
Launching Job 1 out of 1
In order to change the average load for a reducer ( in bytes):
   set hive. exec .reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
   set hive. exec .reducers.max=< /number ><number>
In order to set a constant number of reducers:
   set mapreduce.job.reduces=< /number ><number>
Starting Spark Job = d5a8ff30-9fb5-401c-beca-1043e38f9362
 
Query Hive on Spark job[0] stages:
0
1
 
Status: Running (Hive on Spark job[0])
Job Progress Format
CurrentTime StageId_StageAttemptId: SucceededTasksCount(+RunningTasksCount-FailedTasksCount) /TotalTasksCount [StageCost]
2015-08-28 11:21:35,736        Stage-0_0: 0 /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:36,743        Stage-0_0: 0(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:39,759        Stage-0_0: 6(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:40,765        Stage-0_0: 27(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:41,773        Stage-0_0: 86(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:42,793        Stage-0_0: 142(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:43,845        Stage-0_0: 197(+51) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:44,851        Stage-0_0: 256(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:45,857        Stage-0_0: 298(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:46,862        Stage-0_0: 359(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:47,868        Stage-0_0: 427(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:48,874        Stage-0_0: 486(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:49,879        Stage-0_0: 551(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:50,883        Stage-0_0: 610(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:51,888        Stage-0_0: 672(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:52,895        Stage-0_0: 737(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:53,903        Stage-0_0: 804(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:54,908        Stage-0_0: 859(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:55,919        Stage-0_0: 913(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:56,942        Stage-0_0: 974(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:57,947        Stage-0_0: 1032(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:58,953        Stage-0_0: 1094(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:21:59,961        Stage-0_0: 1159(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:00,971        Stage-0_0: 1223(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:01,988        Stage-0_0: 1281(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:02,993        Stage-0_0: 1341(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:03,997        Stage-0_0: 1400(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:05,003        Stage-0_0: 1449(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:06,016        Stage-0_0: 1506(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:07,027        Stage-0_0: 1571(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:08,032        Stage-0_0: 1634(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:09,038        Stage-0_0: 1691(+51) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:10,042        Stage-0_0: 1749(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:11,048        Stage-0_0: 1816(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:12,052        Stage-0_0: 1878(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:13,057        Stage-0_0: 1942(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:14,061        Stage-0_0: 2010(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:15,065        Stage-0_0: 2073(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:16,069        Stage-0_0: 2115(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:17,077        Stage-0_0: 2184(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:18,081        Stage-0_0: 2244(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:19,086        Stage-0_0: 2305(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:20,090        Stage-0_0: 2362(+50) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:21,094        Stage-0_0: 2421(+51) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:22,098        Stage-0_0: 2478(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:23,102        Stage-0_0: 2536(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:24,106        Stage-0_0: 2599(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:25,111        Stage-0_0: 2634(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:26,115        Stage-0_0: 2682(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:27,128        Stage-0_0: 2740(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:28,135        Stage-0_0: 2790(+47) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:29,140        Stage-0_0: 2847(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:30,144        Stage-0_0: 2889(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:31,148        Stage-0_0: 2950(+47) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:32,152        Stage-0_0: 3014(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:33,157        Stage-0_0: 3064(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:34,160        Stage-0_0: 3116(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:35,194        Stage-0_0: 3166(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:36,198        Stage-0_0: 3219(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:37,202        Stage-0_0: 3271(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:38,205        Stage-0_0: 3315(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:39,210        Stage-0_0: 3355(+47) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:40,214        Stage-0_0: 3424(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:41,217        Stage-0_0: 3481(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:42,221        Stage-0_0: 3528(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:43,224        Stage-0_0: 3585(+47) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:44,228        Stage-0_0: 3636(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:45,232        Stage-0_0: 3685(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:46,235        Stage-0_0: 3739(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:47,238        Stage-0_0: 3796(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:48,246        Stage-0_0: 3839(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:49,275        Stage-0_0: 3899(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:50,279        Stage-0_0: 3952(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:51,282        Stage-0_0: 4010(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:52,286        Stage-0_0: 4063(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:53,290        Stage-0_0: 4114(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:54,293        Stage-0_0: 4158(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:55,297        Stage-0_0: 4202(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:56,300        Stage-0_0: 4251(+47) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:57,304        Stage-0_0: 4310(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:58,307        Stage-0_0: 4358(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:22:59,312        Stage-0_0: 4395(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:00,323        Stage-0_0: 4444(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:01,326        Stage-0_0: 4500(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:02,348        Stage-0_0: 4555(+47) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:03,352        Stage-0_0: 4598(+47) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:04,355        Stage-0_0: 4648(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:05,358        Stage-0_0: 4684(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:06,361        Stage-0_0: 4745(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:07,364        Stage-0_0: 4803(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:08,376        Stage-0_0: 4847(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:09,379        Stage-0_0: 4907(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:10,389        Stage-0_0: 4959(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:11,397        Stage-0_0: 5012(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:12,400        Stage-0_0: 5063(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:13,403        Stage-0_0: 5110(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:14,407        Stage-0_0: 5163(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:15,410        Stage-0_0: 5219(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:16,416        Stage-0_0: 5263(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:17,419        Stage-0_0: 5312(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:18,423        Stage-0_0: 5350(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:19,429        Stage-0_0: 5397(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:20,432        Stage-0_0: 5453(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:21,435        Stage-0_0: 5506(+2) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:22,438        Stage-0_0: 5508(+0) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:24,468        Stage-0_0: 5508(+46) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:25,478        Stage-0_0: 5517(+37) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:26,484        Stage-0_0: 5526(+28) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:27,487        Stage-0_0: 5546(+8) /5554        Stage-1_0: 0 /1       
2015-08-28 11:23:28,491        Stage-0_0: 5554 /5554 Finished        Stage-1_0: 0(+1) /1       
2015-08-28 11:23:30,497        Stage-0_0: 5554 /5554 Finished        Stage-1_0: 1 /1 Finished
Status: Finished successfully in 151.80 seconds
OK
1251538181
Time taken: 161.475 seconds, Fetched: 1 row(s)



再来看看yarn WEB UI界面上的显示:
 
如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop
  注意看里面的作业名称(Name)变成了Hive on Spark,而且应用类型(Application Type)变成了SPARK。
  从计算速度来看,执行同一个SQL分别在MapReduce执行引擎和Spark执行引擎上运行,Spark执行引擎确实是要比MapReduce执行引擎快,不过就稳定性而已,Hive on Spark还在开发中,可能有一些地方不太稳定。


注意:

 1、本文上面的Hive on Spark的各组件版本是:Hive 0.12.0,Spark 1.4.1, Hadoop 2.2.0,如果大家在使用的过程中遇到各种异常,请先确认Hive的版本和Spark是否兼容!
  2、如何确定Hive启动的时候已经加载了Spark相关的类包?一个简单的方法就是,在启动hive的时候,观察输出的日志是否有类似于SLF4J: Found binding in [jar:file:/home/q/spark/spark-1.5.1-bin-2.2.0/lib/spark-assembly-1.5.1-hadoop2.2.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]相关的信息。
  3、如果出现类似于以下的异常信息,请确保你Spark相关类包在Hive启动classpath中。


[Bash shell]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Exception in thread "main" java.lang.NoClassDefFoundError: io /netty/util/concurrent/GenericFutureListener
   at org.apache.hive.spark.client.SparkClientFactory.initialize(SparkClientFactory.java:56)
   at org.apache.hadoop.hive.ql. exec .spark.session.SparkSessionManagerImpl.setup(SparkSessionManagerImpl.java:86)
   at org.apache.hadoop.hive.ql. exec .spark.session.SparkSessionManagerImpl.getSession(SparkSessionManagerImpl.java:102)
   at org.apache.hadoop.hive.ql. exec .spark.SparkUtilities.getSparkSession(SparkUtilities.java:112)
   at org.apache.hadoop.hive.ql.optimizer.spark.SetSparkReducerParallelism.process(SetSparkReducerParallelism.java:115)
   at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90)
   at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:95)
   at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:79)
   at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.walk(DefaultGraphWalker.java:133)
   at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking(DefaultGraphWalker.java:110)
   at org.apache.hadoop.hive.ql.parse.spark.SparkCompiler.optimizeOperatorPlan(SparkCompiler.java:128)
   at org.apache.hadoop.hive.ql.parse.TaskCompiler.compile(TaskCompiler.java:102)
   at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10125)
   at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:207)
   at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:227)
   at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:424)
   at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:308)
   at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1122)
   at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1170)
   at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)
   at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
   at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:213)
   at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:165)
   at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:376)
   at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:736)
   at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
   at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.ClassNotFoundException: io.netty.util.concurrent.GenericFutureListener
   at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
   at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
   ... 32 more

 4、如果在使用Hive on Spark中遇到其他不确定的问题,最好打开Hive的debug日志,这里面会有很多详细的信息
详细参考
hive如何调试,如何查找问题原因
http://www.aboutyun.com/forum.php?mod=viewthread&tid=6505

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Hive on Spark 是一种运行 Apache Hive 查询的方式,使用 Apache Spark 作为后端执行引擎。这种方式可以提高 Hive 的查询效率,并带来更好的性能和扩展性。它同时保留了 Hive 的简单易用性,因此对于需要处理大数据集的用户来说是一个不错的选择。 ### 回答2: Hive on Spark是一种基于Spark引擎的大数据处理工具。Hive是一个开源的数据仓库基础架构,它可以让用户通过类似SQL的查询语言HiveQL来处理大规模数据。而Spark是一种快速、通用的大数据处理引擎,可以在内存中进行数据计算,提供了丰富的API和工具。 Hive on Spark的优势在于,它将HiveSpark的强大功能相结合,提供了更高效、更灵活的数据处理和分析能力。具体而言,Hive on Spark可以利用Spark的内存计算和并行处理能力,加快数据查询和分析速度,提高性能。同时,Hive on Spark支持多种数据源,包括Hadoop HDFS、Hive和其他Hive支持的数据格式,使得数据的读取和转换更加方便。 除此之外,Hive on Spark还提供了更多的数据处理功能,如交互式查询、流式处理、机器学习和图计算等。通过与Spark生态系统的整合,用户可以利用Spark的机器学习库MLlib进行数据挖掘和建模,使用Spark的图计算库GraphX分析大规模图数据,以及使用Spark Streaming进行实时数据处理。这为用户提供了更多的选择和灵活性,满足不同场景下的数据处理需求。 总之,Hive on Spark是一种强大的大数据处理工具,结合了Hive的数据仓库架构和Spark的计算引擎,提供了高效、灵活的数据处理和分析能力。它可以加速查询速度、提高性能,同时支持多种数据源和更多的数据处理功能,满足不同应用场景下的大数据需求。 ### 回答3: Hive on Spark是一种在Apache Hadoop生态系统中运行的开源分布式处理框架。它结合了Apache Hive和Apache Spark的功能,提供了更高效的数据查询和分析。 Hive是一种基于Hadoop的数据仓库基础设施,允许用户通过Hive查询语言(HiveQL)从大规模数据集中进行数据查询和分析。然而,Hive在处理大规模数据时存在一些性能瓶颈。为了解决这个问题,引入了Hive on SparkSpark是一个快速的、通用的数据处理框架,具有高效的内存计算能力和分布式数据处理功能。通过将HiveSpark集成,Hive on Spark可以利用Spark的内存计算和分布式处理能力来改善数据查询的执行性能。 Hive on Spark的好处包括: 1. 更快的查询速度:由于Spark的高效计算引擎,Hive on Spark可以显著提高查询的执行速度。相比传统的基于MapReduce的Hive查询,Hive on Spark可以提供更快的响应时间。 2. 更好的资源管理:Spark具有自己的资源管理器,可以更好地管理计算资源,实现更好的资源利用和调度。这使得Hive on Spark能够更好地处理大规模数据集,实现更高效的查询处理。 3. 更丰富的功能支持:Spark提供了许多高级功能,如机器学习、实时流处理和图处理等。通过将HiveSpark集成,Hive on Spark可以从这些功能中受益,并扩展其查询和分析的能力。 总之,Hive on Spark是一个强大的工具,它在提供高性能数据查询和分析能力的同时,还融合了HiveSpark的优势。对于需要处理大规模数据集的企业和组织来说,Hive on Spark是一个值得考虑的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值