我正在运行Hadoop 2.8。1和蜂巢2.3。0我正在尝试从配置单元中创建的a表中读取值,当前异常为
java.lang.ClassNotFoundException: org.apache.hadoop.tracing.SpanReceiverHost
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
这是我用来读取表格的代码
public static final String HIVEURL = "jdbc:hive2://localhost:10000";
public static final String DB_NAME = "default";
public static final String TABLE_NAME = "order_line";
public static void main(String[] args) throws Exception {
HiveConf hiveConf = new HiveConf();
//hiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, HIVEURL);
HiveMetaStoreClient hiveClient = new HiveMetaStoreClient(hiveConf);
Job job =Job.getInstance();
TaskAttemptContext ctx = new TaskAttemptContextImpl(job.getConfiguration(), new TaskAttemptID());
HCatInputFormat hcif = HCatInputFormat.setInput(job, DB_NAME, TABLE_NAME);
HCatSchema allCols = hcif.getTableSchema(job.getConfiguration());
List<HCatFieldSchema> usedList = new ArrayList<>();
usedList.add(allCols.get(2)); // por ex...
HCatSchema someCols = new HCatSchema(usedList);
hcif.setOutputSchema(job, someCols);
for(InputSplit split: hcif.getSplits(job)) {
RecordReader<WritableComparable, HCatRecord> rr = hcif.createRecordReader(split,ctx);
rr.initialize(split, ctx);
while(rr.nextKeyValue()) {
HCatRecord record = rr.getCurrentValue();
// usar record.get(...) para obter a coluna...
//Object o = record.get(1);
//System.out.println(o.toString());
}
rr.close();
}
hiveClient.close();
}
这里是我使用的Pom文件
组织。阿帕奇。蜂箱hcatalog hive hcatalog core 2.3。0组织。阿帕奇。蜂箱hcatalog蜂巢hcatalog 0.13。1-cdh5。3.5组织。阿帕奇。蜂巢普通蜂巢2.3。0
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive</artifactId>
<version>0.13.1-cdh5.3.5</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-metastore</artifactId>
<version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>2.6.0-mr1-cdh5.12.1</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.9.3</version>
</dependency>
</dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<!-- org/apache/hadoop/tracing/SpanReceiverHost The Last version is hadoop-common 2.7.7-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.7</version>
</dependency>
我看不出堆栈跟踪片段中的loadClass
实际上是由什么引起的,但是看起来这个类实际上不存在于您正在使用的hadoop-通用
的版本2.8.1中。它似乎在2.7.2之后的某个地方消失了
它,或者同名的东西,在hbase源代码中
你有版本的混搭吗?
问题内容: 我正在尝试使用Eclipse在Maven项目中作为Java应用程序运行,并且遇到以下运行时错误。错误如下所示。 线程“主”中的异常java.lang.NoClassDefFoundError:com.wang.testMaven.App.main(App.java:16)上的org / apache / http / ConnectionReuseStrategy造成原因:java.l
问题内容: 我尝试通过Solrj查询Solr 这是我的代码 } 这给了我一个例外 PS。我的个人有以下罐子: * apache-commons-logging, httpclient -4.2, httpcore 4.2.1,slf4j-api 1.6.2, apache-solr-solrj -1.4.0 *** 问题答案: 您需要在类路径上使用commons-codec.jar。
问题内容: 我使用ant脚本构建了一个可执行jar,我使用的唯一外部jar是joda-time 2.0。由于我没有收到任何编译错误,因此该蚂蚁构建脚本“似乎”可以正常工作,如果我要从lib目录中删除jode-time 2.0.jar,则构建确实会按预期失败。无论如何,构建jar之后,当我尝试运行时会出现此错误: java -jar myapp.jar 线程“主”中的异常java.lang.NoCl
包com.copiedcrawler;
我知道有很多关于这个例外的帖子,但是我不能解决这个问题。我认为必须编辑类路径来解决它。我试图在hadoop架构体系中运行一个名为远程地图的程序。这是我得到的错误。 Echo$CLASSPATH给出了一个空行 cat~/。bash_简介说 更新: $HADOOP_HOME $HADOOP_CLASSPATH 有人能帮我解决这个问题吗? 谢谢
jar-cvfe-dhj。jar DefaultHadoopJobDriver 我的Hadoop作业只有一个类“DefaultHoopJobDrive”,它扩展了配置和实现工具,并将方法作为作业创建和inputpath、outpurpath集的唯一代码运行。我也在使用新的API。