我无法使用下面的脚本
在hive中创建带有分区列的外部表CREATE EXTERNAL TABLE Opportunity_par(key string,Opportunity__Id string,Campaign__Name string)
> PARTITIONED BY (eventDate timestamp)
> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf2:Opportunity__Id,cf3:Campaign__Name,cf1:eventDate")
> TBLPROPERTIES("hbase.table.name" = "test_table");
显示以下错误,
FAILED: Error in metadata: java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException org.apache.hadoop.hive.hbase.HBaseSerDe: columns has 3 elements while hbase.columns.mapping has 4 elements (counting the key if implicit))
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
请给出使用分区列
在hive中创建外部表的解决方案或建议谢谢大家......
答案 0 :(得分:0)
不确定HBase角度,但是......
分区只是表文件夹中的子文件夹。请注意,所有Hive表(元数据和数据)仅存在于HDFS(或其他受支持的系统)上,而不存在于本地文件系统中。
外部表上的分区很棘手,因为:外部表只指向预先存在的位置/文件夹中存在的数据。如果文件夹是预先存在的,则意味着很可能内部没有与该分区对应的子文件夹。因此,为了创建/添加分区到外部表,它必须具有该分区的预先存在的子文件夹,或者您必须手动创建一个。
请查看此信息以获取更多信息:http://blog.zhengdong.me/2012/02/22/hive-external-table-with-partitions