我在使用dataframe API执行一个连接操作时收到一个问题,如" sql.AnalysisException:无法解析column_name ".虽然列名存在,但是当使用HiveContext的SQL格式尝试时,相同的连接操作正常工作.在以下代码库中,
DataFrame df= df1
.join(df2, df1.col("MERCHANT").equalTo(df2.col("MERCHANT")))
.select(df2.col("MERCH_ID"), df1.col("MERCHANT")));
Run Code Online (Sandbox Code Playgroud)
我也尝试过"别名"功能,但遇到了同样的问题"无法解析列名".并抛出以下异常.
MERCHANT#737,MERCHANT#928,MERCH_ID#929,MER_LOC#930在运营商!项目[MERCH_ID#738,MERCHANT#737]中缺少已解决的属性MERCH_ID#738;
在org.apache.spark.sql.catalyst.analysis.CheckAnalysis $ class.failAnalysis(CheckAnalysis.scala:38)
Spark版本:1.6
Scala和Java Spark都遇到了这个问题.
在Scala中,使用" 别名 " 解决了问题,但在Java中,我仍然遇到错误.
我使用以下结构但失败但无法创建代理调用.
在controller-servlet.xml中
<context:component-scan base-package="com.controller" />
<mvc:annotation-driven/>
<mvc:resources mapping="/static/**" location="/static/" />
<mvc:default-servlet-handler/>
Run Code Online (Sandbox Code Playgroud)
在application-context.xml中
<context:component-scan base-package="com.common" />
<context:component-scan base-package="com.dao" />
<mvc:annotation-driven/>
<aop:aspectj-autoproxy />
<!-- Aspect Bean Definition
<bean id="aspectBean" class="com.common.AspectImple" /> -->
Run Code Online (Sandbox Code Playgroud)
Aspect类
package com.common;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class AspectImple {
@Before("execution(* com.controller.JobController.*(..))")
public void beforeImpl() {
System.out.println(" Before Done ");
}
}
Run Code Online (Sandbox Code Playgroud)
控制器类
@Controller
public class JobController {
@RequestMapping(method = RequestMethod.GET, value = "/xyz")
public ModelAndView abc(HttpServletRequest request,
HttpServletResponse response) {
...
m1(10);
...
} …Run Code Online (Sandbox Code Playgroud)