spark on yarn与idea直连操作sql遇到的一些问题
先上代码
SparkConf conf = new SparkConf().setAppName("programdept").setMaster("yarn-client")
.set("yarn.resourcemanager.hostname", "10.100.200.11")
// .set("spark.executor.instances","1")
// .set("spark.executor.memory","3500M")
.setJars(new String[]{"D:\\code\\sparkonyarn\\out\\artifacts\\sparkonyarn.jar"})
.set("spark.yarn.preserve.staging.files","false")
.set("spark.executor.extraClassPath"," /opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/hive/lib/*");
JavaSparkContext sparkContext = new JavaSparkContext(conf);
HiveContext hiveContext = new HiveContext(sparkContext.sc());
// hiveContext.clearCache();
hiveContext.sql("use oracle_table");
DataFrame sql = hiveContext.sql("select count(1) from com_organization")
sparkContext.close();
}
其实就是一个很简单的需求,通过hive与spark集成从而来查询hive表中的数据
-
首先你要把配置文件放入idea中
-
你的代码设置为spark on yarn模式,参考上方代码
-
设置好你的包
-
运行一直失败,参考日志
-
缺少某些包,接着把yarn site中设置相应的包
-
还差hive的包,通过上方的方式导入不行,就直接在代码中添加
set(“spark.executor.extraClassPath”," /opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/hive/lib/* -
最终运行成功,在出现此种错的时候去翻看其他人的解决方法,而没有细分析自己的日志,导致做了很多无用功,自己出现问题自己先找好自己的