hive使用技巧:使用MSCK导入输入到hive表

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  

猜你喜欢

转载自blog.csdn.net/lbship/article/details/84197376
今日推荐