Impala 创建外部表,由 Hive 存储
Posted
技术标签:
【中文标题】Impala 创建外部表,由 Hive 存储【英文标题】:Impala create external table, stored by Hive 【发布时间】:2014-06-24 08:42:42 【问题描述】:从昨天开始,我一直在试图弄清楚为什么我的表创建不起作用。由于我无法将我的 Impala 链接到我的 Hbase,我无法在我的 Twitter 流上进行查询:/
对于 SerDe 属性,我是否需要像 Hive 这样的特殊 JAR?
这是我的命令:
创建外部表 HB_IMPALA_TWEETS ( id int, id_str 字符串, 文本字符串, created_at 时间戳, 地理纬度双倍, geo_longitude 双倍, user_screen_name 字符串, user_location 字符串, user_followers_count 字符串, user_profile_image_url 字符串 ) 由“org.apache.hadoop.hive.hbase.HBaseStorageHandler”存储 具有SERDE属性( “hbase.columns.mapping”= ":key,tweet:id_str,tweet:text,tweet:created_at,tweet:geo_latitude,tweet:geo_longitude, user:screen_name,user:location,user:followers_count,user:profile_image_url" ) TBLPROPERTIES("hbase.table.name" = "tweets");
但我收到一个错误:stored by:
查询:create EXTERNAL TABLE HB_IMPALA_TWEETS (id int, id_str string, text string, created_at timestamp, geo_latitude double, geo_longitude double, user_screen_name string, user_location string, user_followers_count string, user_profile_image_url string) 由 'org.apache.hadoop.hive .hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,tweet:id_str,tweet:text,tweet:created_at,tweet:geo_latitude,tweet:geo_longitude, user:screen_name,user:location,user: Followers_count,user:profile_image_url") TBLPROPERTIES("hbase.table.name" = "tweets") 错误:AnalysisException:第 1 行中的语法错误: ...image_url string ) 存储 BY 'org.apache.hadoop.hive.h...
遇到:BY
预期:AS
原因:异常:语法错误
有关信息,我关注了此页面: https://github.com/AronMacDonald/Twitter_Hbase_Impala/blob/master/README.md
谢谢你帮助我:)
【问题讨论】:
【参考方案1】:嗯,Impala 似乎仍然不支持 SerDe(序列化/反序列化)。
“您使用 Hive shell 在 Impala 端创建表, 因为 Impala CREATE TABLE 语句目前不支持 这些表所需的自定义 SerDes 和其他一些语法:您 使用 STORED BY 将其指定为 HBase 表 Hive 上的“org.apache.hadoop.hive.hbase.HBaseStorageHandler”子句 CREATE TABLE 语句。”
因此,只需在 hive shell 或 hue hive 上运行命令,然后在 impala 中键入“invalidate metadata”,然后您就可以看到带有“show tables”的表。
所以这部分的问题似乎解决了。
【讨论】:
以上是关于Impala 创建外部表,由 Hive 存储的主要内容,如果未能解决你的问题,请参考以下文章