hive读取hbase数据 create external table需要注意的地方

现有一个需求是要使用hive从hbase中聚合数据并存放到mysql中。

涉及到了从hive中读取hbase。读取方法上网一搜搜到了,不再赘述。但很多并不是按照他的步骤走下来就可以没有错误的执行的。会遇到不同的问题。这里记录一下我遇到的问题。

  • EOF 字样问题
    通常看到这个字样就说明对应的符号缺少了,比如(),只写了(,忘记写 ) ,单双引号遗漏的问题,但是在hive的命令行中,我发现了是我的格式有问题。

create external table sysexception(
key string,
IPAddr string,
servername string,
time string,
source string,
hostname string,
dates string,
fromhostIp string,
loglevel string,
msg string,
syslogtag string
)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES(
“hbase.columns.mapping”=
“:key,
exceptionlog:IPAddr,
exceptionlog:servername,
exceptionlog:time,
exceptionlog:source,
exceptionlog:hostname,
exceptionlog:date,
exceptionlog:fromhostIp,
exceptionlog:loglevel,
exceptionlog:msg,
exceptionlog:syslogtag”
)
TBLPROPERTIES(“hbase.table.name” = “sysexception”);

如上,是我试过的没有问题的格式,可以运行的命令。尽量在一行只写一个字段,长一点没有关系。之前是在一行写了多个字段,造成了刚才的EOF问题。

  • org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:org.apache.hadoop.hbase.client.RetriesExhaustedException: Can’t get the locations 异常

    遇到这个异常,我直接说解决办法,没有在hive的conf目录下,放置你的hbase-site.xml文件。
    网上有查到在hive-site里面配置zookeeper地址等配置说也可以的,但是我试了下并不可以,把hbase的这个配置文件放进去就可以了。

  • column 10 ,but has 11 mappings
    这个问题是因为hive在hbase.columns.mapping里面建立了一个key字段,所以,表面上是10个字段一一对应,实际上是11个,解决办法就是像我上面贴出来的那样,columns里面添加一个key string,mappings里面添加一个:key,这里为何是:key??,因为它是hive生成的,不是hbase的列,因此列簇是空,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值