在配置单元中执行 select 查询时出错
error while executing select query in hive
我正在使用 hadoop 1.1.2、hbase 0.94.8 和 hive 0.14。
我正在尝试使用配置单元在 hbase 中创建一个 table,稍后通过插入覆盖在其中加载数据。
目前我能够创建 table:
CREATE TABLE hbase_table_emp(id int, name string, role string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:name,cf1:role")
TBLPROPERTIES ("hbase.table.name" = "emp");
并将数据加载到另一个 table 中,我会将其覆盖到 hbase table :
hive> create table testemp(id int, name string, role string) row format delimited fields terminated by '\t';
hive> load data local inpath '/home/user/sample.txt' into table testemp;
但是当我尝试 select * from testemp;
验证数据是否已成功加载时,我收到此错误:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.mapred.JobConf.unset(Ljava/lang/String;)V
at org.apache.hadoop.hive.ql.io.HiveInputFormat.pushFilters(HiveInputFormat.java:432)
at org.apache.hadoop.hive.ql.exec.FetchTask.initialize(FetchTask.java:76)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:443)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:303)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1067)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1129)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1004)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:994)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:247)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:199)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:410)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:783)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)
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:622)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
有人可以帮帮我吗!谢谢
不幸的是,我相信您必须将 Hadoop 至少升级到 1.2.0。
Hive 似乎正在尝试访问 org.apache.hadoop.mapred.JobConf
class 的 unset
方法。在查看 Hadoop 1.1.2 中 class 的 API documentation 时,您可以看到该方法不存在。
1.x 系列中实现该方法的第一个版本是 1.2.0(请参阅 API documentation 了解相同的 class)。请注意,该方法实际上是从 org.apache.hadoop.conf.Configuration
class.
继承的
我正在使用 hadoop 1.1.2、hbase 0.94.8 和 hive 0.14。 我正在尝试使用配置单元在 hbase 中创建一个 table,稍后通过插入覆盖在其中加载数据。
目前我能够创建 table:
CREATE TABLE hbase_table_emp(id int, name string, role string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:name,cf1:role")
TBLPROPERTIES ("hbase.table.name" = "emp");
并将数据加载到另一个 table 中,我会将其覆盖到 hbase table :
hive> create table testemp(id int, name string, role string) row format delimited fields terminated by '\t';
hive> load data local inpath '/home/user/sample.txt' into table testemp;
但是当我尝试 select * from testemp;
验证数据是否已成功加载时,我收到此错误:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.mapred.JobConf.unset(Ljava/lang/String;)V
at org.apache.hadoop.hive.ql.io.HiveInputFormat.pushFilters(HiveInputFormat.java:432)
at org.apache.hadoop.hive.ql.exec.FetchTask.initialize(FetchTask.java:76)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:443)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:303)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1067)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1129)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1004)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:994)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:247)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:199)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:410)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:783)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)
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:622)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
有人可以帮帮我吗!谢谢
不幸的是,我相信您必须将 Hadoop 至少升级到 1.2.0。
Hive 似乎正在尝试访问 org.apache.hadoop.mapred.JobConf
class 的 unset
方法。在查看 Hadoop 1.1.2 中 class 的 API documentation 时,您可以看到该方法不存在。
1.x 系列中实现该方法的第一个版本是 1.2.0(请参阅 API documentation 了解相同的 class)。请注意,该方法实际上是从 org.apache.hadoop.conf.Configuration
class.