Hive外部表没有显示分区

时间:2015-06-15 06:07:47

标签: hive external partition

我使用Hive创建了一个外部表。我的

hive> desc <table_name>;

显示以下输出:

OK
transactiontype         string                                      
transactionid           int                                         
sourcenumber            int                                         
destnumber              int                                         
amount                  int                                         
assumedfield1           int                                         
transactionstatus       string                                      
assumedfield2           int                                         
assumedfield3           int                                         
transactiondate         date                                        
customerid              int                                         

# Partition Information      
# col_name              data_type               comment             

  transactiondate       date                                        
  customerid            int                                         
  Time taken: 0.094 seconds, Fetched: 17 row(s)

但是当我执行以下命令时:

hive> show partitions <dbname.tablename>;
OK
Time taken: 0.11 seconds

未显示任何分区。可能是什么问题?当我看到hive.log时,表格中的数据似乎根据“交易日期”正确分配。和&#39; customerid&#39;领域。单个节点应具有的最大分区数是多少?我已经设置了1000个分区。

2015-06-15 10:33:44,713 INFO  [LocalJobRunner Map Task Executor #0]:       exec.FileSinkOperator (FileSinkOperator.java:createBucketForFileIdx(593)) - Writing to temp file: FS hdfs://localhost:54310/home/deepak/mobile_money_jan.txt/.hive-staging_hive_2015-06-15_10-30-53_308_5507019849041735537-1/_task_tmp.-ext-10002/transactiondate=2015-01-16/customerid=34560544/_tmp.000002_0

我正在单个节点hadoop集群上运行配置单元。

2 个答案:

答案 0 :(得分:0)

尝试手动添加分区

> alter table db.table add IF NOT EXISTS
> partition(datadate='2017-01-01') location
>'hdfs_location/datadate=2017-01-01'

答案 1 :(得分:0)

HI,每当我们创建一个外部表时,它的位置都将更改为HIVE METADATA中的指定位置,这意味着现在这种更改也反映在hive元存储中。 但是分区信息保持不变,分区信息不会在配置单元存储中更新,因此我们需要手动添加这些分区。

ALTER TABLE "your-table" ADD PARTITION(transactiondate='datevalue',customerid='id-value');