我使用Hortonwork的HDP 2.2(Spark 1.2.1& Hive 0.14)部署了一个hadoop集群
我开发了一个简单的Spark应用程序,它应该检索Hive表的内容,执行一些操作并输出到文件。 Hive表是使用Hive's built-in SerDe导入的。
当我在群集上运行应用程序时,我得到以下异常:
.embed-container {
position: relative;
padding-bottom: 100%;
height: 0;
overflow: hidden;
}
.embed-container iframe {
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
}
基本上,Spark没有找到Hive的SerDe(ERROR log: error in initSerDe: java.lang.ClassNotFoundException Class org.apache.hadoop.hive.serde2.OpenCSVSerde not found
java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.serde2.OpenCSVSerde not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1982)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:337)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:288)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:281)
at org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:631)
at org.apache.hadoop.hive.ql.metadata.Table.checkValidity(Table.java:189)
at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:1017)
...
)
我没有找到任何要包含在应用程序执行中的jar,也没有提到任何类似的问题。我不知道如何告诉Spark在哪里找到它。
答案 0 :(得分:0)
制作包含hive-serde JAR的应用程序的着色JAR。请参阅this
答案 1 :(得分:0)
在spark config spark.driver.extraClassPath中添加jar文件。 必须在此处添加任何外部jar,然后spark环境将自动加载它们。
或者使用spark-shell --jars命令
例如
spark.executor.extraClassPath /usr/lib/hadoop/lib/csv-serde-0.9.1.jar
答案 2 :(得分:0)
.jar位于hive的lib文件夹中,只需在启动时使用--jar添加它,并知道在哪里查看!
--jars /usr/hdp/XXX/hive/lib/hive-serde-XXX.jar