我试图运行一个基本的" Hello world"在纱线客户端模式下使用带有Hive的DataFrames的类型示例。我的代码是:
JavaSparkContext sc = new JavaSparkContext("yarn-client", "Test app"))
HiveContext sqlContext = new HiveContext(sc.sc());
sqlContext.sql("SELECT * FROM my_table").count();
这在本地模式下工作正常,但是当我在yarn-client模式下运行时,我在驱动程序上遇到了这个异常:
抛出java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.plan.TableDesc
我已经确认缺少的类在驱动程序类路径上使用:
try {
Class.forName("org.apache.hadoop.hive.ql.plan.TableDesc");
System.out.println("On classpath");
} catch (ClassNotFoundException e) {
System.out.println("Not found on classpath");
}
有谁知道我做错了什么?
更新:我没有在本地或纱线群集模式下运行任何错误。此问题仅发生在纱线客户端模式中。
答案 0 :(得分:1)
您需要提供配置单元客户端库以及您的代码。在您的构建(maven,gradle或SBT)中使用allinone,shading或fatjars可能最容易
答案 1 :(得分:0)
跑步时你可以传递像
这样的罐子 Spark-submit ..... --jar /usr/hdp/hive/lib/hive-client.jar
还出口蜂巢回家,hadoop回家和火花回家