spring boot 使用 "Phoenix" JdbcTemplate 读取非主键字段的值结果为空

2018-11-09 19:20:34 +08:00
 abcdxx

Phoenix 建表语句

create table IF NOT EXISTS shop_day (
face_id varchar not null,
shop_key integer not null,
date_key integer not null,
business_key integer,
brand_key integer,
pv integer
CONSTRAINT pk PRIMARY key (face_id, shop_key, date_key)
);

spring 配置

 spring   
    phoenix:
      datasource:
        url: jdbc:phoenix:127.0.0.1:2181
        driverclassname: org.apache.phoenix.jdbc.PhoenixDriver
        username:
        password:

spring 代码


  @Qualifier("phoenixJdbcTemplate")
  @Autowired
  private JdbcTemplate jdbcPhoenix;

  void getFaceShopInfo() {

    String sql = "select * from shop_day where face_id in('1234')";
    Map<String, Object> stringObjectMap = jdbcPhoenix.queryForMap(sql);
  }  

#stringObjectMap 只有 face_id, shop_key, date_key 主键字段有数据,其他字段数据都是 null

在终端查询这条 sql 每个字段都有数据


0: jdbc:phoenix:> select * from shop_day where face_id in('1234');

有大佬知道是什么问题吗.

1605 次点击
所在节点    Java
4 条回复
abcdxx
2018-11-09 20:13:16 +08:00
???
szq8014
2018-11-10 09:11:49 +08:00
其他列是什么类型的?试试原生的 PreparedStatement/RestulSet ?
再就是 in 查询一般返回多行为啥用 map 接,怎么也得上个 list 吧?
thinkmore
2018-11-12 10:24:59 +08:00
把你的 sql 语句拿到 phoenix client 中执行以下看看呢?或者在试一试指定返回字段看看
thinkmore
2018-11-12 10:25:35 +08:00
在确认下你 hbase 中表是否建好了,然后是不是有对应的列

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/506249

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX