1.使用MSCK命令导入输入到hive表
假设创建一个外部表,这个表在hdfs的order文件夹里,但是这个文件夹现在是空的。所以用select * 是没有数据的。
CREATE EXTERNAL TABLE order(
order STRING
, time STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/hive/order';
我们通过hdfs dfs -put 方式把数据导入到hdfs的order 文件夹下。
然后在hive里面输入命令 msck repair table order;
现在再select * 就有数据了。通过这种方式,可以很快导入数据到表格里面,而不用一个个alter ...add partition来导入。
2.使用describe formatted order_creates;可以查看表具体信息,包括位置,分隔符等。formatted不写就看简单点的。
3.关闭动态分区模式
如果insert语句报错的时候Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict
可以先进行如下设置在操作。set hive.exec.dynamic.partition.mode=nonstrict;
有关动态分区表模式
hive.exec.dynamic.partition=false #默认不允许动态分区表
hive.exec.dynamic.partition.mode=strict #设置动态分区模式
hive.exec.max.dynamic.partitions.pernode=100 #动态分区在每个map、reducer里面创建数量
hive.exec.max.dynamic.partitions=1000 #动态分区被创建总数
hive.exec.max.created.files=100000 #所有mapper创建最大HDFS文件数
hive.error.on.empty.partition=false