我使用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集群上运行配置单元。
答案 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');