• idea请问这两处标红是哪错了


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 2401_85011662 2024-05-14 15:13 采纳率: 0% 浏览 7 首页/ 大数据 / idea请问这两处标红是哪错了 hbasehadoopidea 不知道为什么标红了,请问怎么修改啊,已经照着直接抄了,检查了几遍好像没打错,但不知道为什么就是飘红了 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 专家-皆知 2024-05-14 15:13
      关注

      请提供代码截图或详细描述标红内容,以便找出错误原因。

      以上回复有部分引自免费微信小程序:皆我百晓生。 如问题尚未解决,还请稍待,如有疑问请回复进一步沟通。

      评论
      专家-皆知 回复 2401_85011662 2024-05-14 15:14

      看起来你在使用IntelliJ IDEA进行HBase编程,并遇到了一些编译错误。让我们逐个解决这些错误。

      首先,针对图1中的问题,IDEA提示 Cannot resolve method 'getScanner' in 'Table'。这通常是因为在当前版本的HBase API中,Table类可能没有名为getScanner的方法。在HBase 1.x中,应该使用createScanner方法创建扫描器。因此,你需要将这一行:

      ResultScanner resultScanner = tbl.getScanner(scan);
      

      改为:

      ResultScanner resultScanner = tbl.createScanner(scan);
      

      对于图2中的问题,IDEA提示需要com.google.common.collect.Table类型,而你提供的是org.apache.hadoop.hbase.client.Table类型。这可能是由于你的代码期望一个不同的数据结构(如Guava库中的Table),而不是HBase的Table对象。如果你确实想要操作HBase表,那么这段代码就不应该在这里,因为这里是在尝试获取一个不同类型的表。确保你的函数签名与预期的操作匹配。

      对于图3中的问题,同样出现了Cannot resolve method 'getScanner' in 'Table'的错误,解决方式同上,需要将getScanner替换为createScanner

      下面是修复后的代码段:

      import org.apache.hadoop.hbase.TableName;
      import org.apache.hadoop.hbase.client.Connection;
      import org.apache.hadoop.hbase.client.ConnectionFactory;
      import org.apache.hadoop.hbase.client.Result;
      import org.apache.hadoop.hbase.client.Scan;
      import org.apache.hadoop.hbase.util.Bytes;
      
      public class WeatherReducer {
      
          public static void showTable(String destTableName, String familyName){
              try {
                  Scan scan = new Scan();
                  TableName tn = TableName.valueOf(destTableName);
                  Connection conn = ConnectionFactory.createConnection();
                  Table table = conn.getTable(tn);
      
                  ResultScanner resultScanner = table.createScanner(scan);
                  byte[] fm = Bytes.toBytes("info");
                  byte[] col1 = Bytes.toBytes("rainfall");
                  byte[] col2 = Bytes.toBytes("maxTemperature");
                  byte[] col3 = Bytes.toBytes("minTemperature");
      
                  for (Result result : resultScanner) {
                      System.out.print(Bytes.toString(result.getRow()) + "\t");
      
                      if (result.containsColumn(fm, col1)){
                          System.out.printf("%7.2f\t", Bytes.toDouble(result.getValue(fm, col1)));
                      }
      
                      if (result.containsColumn(fm, col2)){
                          System.out.printf("%7.2f\t", Bytes.toDouble(result.getValue(fm, col2)));
                      }
      
                      if (result.containsColumn(fm, col3)){
                          System.out.printf("%7.2f\t", Bytes.toDouble(result.getValue(fm, col3)));
                      }
                  }
                  resultScanner.close();
                  conn.close();
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      

      这个代码片段修复了上述提到的问题,现在你应该可以正常运行它了。如果有其他问题,请随时告诉我。

      回复
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      计算机网络 | 网络层(控制平面)
      QT 连接SQLServer数据库
      Linux学习-68-日志转储logrotate命令(logrotate配置文件)
      SELECT COUNT(*) 会造成全表扫描吗?
      【阿里云天池大赛赛题解析】 刷书笔记 Lesson 1 数据探索基础知识
      手把手教你君正X2000开发板的OpenHarmony环境搭建
      cv2.cvtColor
      免费:实时 AI 编程助手 Amazon CodeWhisperer
      【Linux】UDP协议
      Vue 之 解决v-html生成的元素不能触发@click等vue事件和CSS样式不生效的方法
    • 原文地址:https://ask.csdn.net/questions/8103282