2016-06-26 3 views
0

나는 springjdbctemplate을 사용하여 하이브 데이터베이스의 데이터를 쿼리합니다. QueryforList 결과 테이블 이름 표시

내 코드입니다 :

@RestController 
public class QueryController { 
    @Autowired 
    protected JdbcTemplate hiveTemplate; 

    @RequestMapping("/query") 
    public List query() { 
     List data = hiveTemplate.queryForList("select * from ecg.hivetbluserdata limit 100"); 
     return data; 
    } 
} 

그러나이 반환

[{"hivetbluserdata.id_data":1,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:26","hivetbluserdata.ecgvalue":3.3871,"hivetbluserdata.inputtime":"2015-04-09 18:11:25.0"}, 
{"hivetbluserdata.id_data":2,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:26","hivetbluserdata.ecgvalue":1.56892,"hivetbluserdata.inputtime":"2015-04-09 18:11:25.0"}, 
{"hivetbluserdata.id_data":3,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:26","hivetbluserdata.ecgvalue":1.60802,"hivetbluserdata.inputtime":"2015-04-09 18:11:26.0"}, 
{"hivetbluserdata.id_data":4,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:26","hivetbluserdata.ecgvalue":2.09677,"hivetbluserdata.inputtime":"2015-04-09 18:11:26.0"}, 
{"hivetbluserdata.id_data":5,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:26","hivetbluserdata.ecgvalue":1.99902,"hivetbluserdata.inputtime":"2015-04-09 18:11:26.0"}, 
{"hivetbluserdata.id_data":6,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:26","hivetbluserdata.ecgvalue":1.97947,"hivetbluserdata.inputtime":"2015-04-09 18:11:26.0"}, 
{"hivetbluserdata.id_data":7,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:26","hivetbluserdata.ecgvalue":1.94037,"hivetbluserdata.inputtime":"2015-04-09 18:11:26.0"}, 
{"hivetbluserdata.id_data":8,"hivetbluserdata.id_user":1,"hivetbluserdata.time":"Thursday, April 09, 2015 18:09:27","hivetbluserdata.ecgvalue":1.56892,"hivetbluserdata.inputtime":"2015-04-09 18:11:26.0"}, 
나는 테이블 이름을 표시하지 않으

(hivetbluserdata 테이블 이름입니다). 이 문제를 어떻게 해결할 수 있습니까?

+0

이전에 본 적이 없지만 정규화 된 테이블 이름에 별칭을 지정해보십시오. ''ecg.hivetbluserdata에서 u. *를 선택하십시오. u "를 100으로 제한하십시오. 참고하시기 바랍니다 : 절대 코드에서'*'를 사용하면 안됩니다. 관심있는 열을 항상 나열하십시오.'*'는 임의 (ad-hoc) 질의에 사용하는 것이 좋지만 코드가 특정 열에 관심이 있으므로 테이블의 모든 열 (현재)이더라도 해당 열을 나열해야합니다 . – Andreas

답변

0

당신은 결과 집합의 테이블 이름을 사용하지 않도록 다음 하이브 구성 등록 정보를 사용할 수 있습니다

<property> 
    <name>hive.resultset.use.unique.column.names</name> 
    <value>false</value> 
</property> 

참조 :

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-hive.resultset.use.unique.column.names

hive.resultset.use.unique. column.names

Default Va 루 : 사실

추가에서 : HIVE-6687

와 하이브 0.13.0 필요한 경우 테이블 별칭으로 열 이름을 정규화하여 결과 집합의 열 이름은 고유합니다. 테이블 별칭 이 "select *"유형의 쿼리에 대해 열 이름에 추가되거나 쿼리에서 테이블 별칭 "select r1.x .."를 명시 적으로 사용하는 경우 열 이름에 테이블 별칭이 추가됩니다.

+0

와우 나는 단지 그것을 안다, 고마워! – samydoyle