直接上代碼了
datas.foreachPartition(new ForeachPartitionFunction<Row>() {
private static final long serialVersionUID = 1L;
@SuppressWarnings("resource")
@Override
public void call(Iterator<Row> t) throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("conf/spring-config.xml");
OracleDataService oracleDataService = context.getBean(OracleDataService.class);
List<TgPoweroffTimePoint> records = new ArrayList<TgPoweroffTimePoint>();
while(t.hasNext()) {
Row row = t.next();
TgPoweroffTimePoint poweroffRecord = new TgPoweroffTimePoint();
poweroffRecord.setCollMeterId(row.getLong(0));
poweroffRecord.setTimePoint(row.getString(1));
poweroffRecord.setDataDate(row.getString(2));
poweroffRecord.setCurveDensity(row.getString(3));
records.add(poweroffRecord);
if(records.size() == 1000) {
List<TgPoweroffTimePoint> temp = new ArrayList<TgPoweroffTimePoint>();
temp.addAll(records);
oracleDataService.suppleAnalysis(temp);
records.clear();
}
}
if(!CollectionUtils.isEmpty(records)) {
oracleDataService.suppleAnalysis(records);
}
}
});
代碼里使用spring+mybatis的方式操作資料庫,使用spark2-submit的方式是可以正常運行的,但使用oozie啟動任務創建sqlSessionFactory時報錯了:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [conf/spring-config.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'URL [jar:file:/hadoopdata/yarn/nm/usercache/xlsoft/appcache/application_1585627237317_0051/container_1585627237317_0051_01_000001/__app__.jar!/mappers/OracleDataMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.xinlian.collStat.dao.OracleDataMapper.SysGatherStatMap
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
... 38 more
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'URL [jar:file:/hadoopdata/yarn/nm/usercache/xlsoft/appcache/application_1585627237317_0051/container_1585627237317_0051_01_000001/__app__.jar!/mappers/OracleDataMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.xinlian.collStat.dao.OracleDataMapper.SysGatherStatMap
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:466)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 45 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.xinlian.collStat.dao.OracleDataMapper.SysGatherStatMap
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:464)
... 48 more
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.xinlian.collStat.dao.OracleDataMapper.SysGatherStatMap
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:816)
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:788)
at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:570)
at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:214)
at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:285)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)
... 50 more
看報錯內容好像是mybatis的xml組態檔里有id定義重復了,但我檢查過了,并沒有重復的,有人遇到過這種情況嗎?求解
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14156.html
標籤:Spark
上一篇:import spark.implicits._不能匯入
下一篇:大佬們 我想在web點擊一個按鈕 就進行一次MapReduce作業分析 請問怎么才能呼叫到Driver 讓MapReduce作業跑起來
