创建配置单元分区表之前要遵循的规则

niknxzdl  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(287)

作为我需求的一部分,我必须创建一个新的配置单元表,并以编程方式插入其中。为此,我使用以下ddl来创建配置单元表:

CREATE EXTERNAL TABLE IF NOT EXISTS countData (
    tableName String,
    ssn String,
    hiveCount String,
    sapCount String,
    countDifference String,
    percentDifference String,
    sap_UpdTms String,
    hive_UpdTms String)
COMMENT 'This table contains record count of corresponding tables of all the source systems present on Hive & SAP'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '';

要将数据插入到配置单元表的分区中,我可以使用程序中的插入查询来处理。在创建表之前,在上面的ddl中,我没有添加“partitioned by”列,因为我不完全清楚划分配置单元表的规则。我知道的几个规则是
从查询插入数据时,分区列应该是最后一个。
按列分区的列不应是表中的现有列。
有人能告诉我划分配置单元表是否有其他规则吗?同样在我的例子中,我们每天运行两次程序,将数据插入表中,每次运行时,可能会有8k到10k条记录。我正在考虑为当前日期添加一个partitioned by列(只是“mm/dd/yyyy”),并从代码中插入它。如果不建议添加日期(字符串格式),有没有更好的方法来实现我的需求的分区思想?

6ovsh4lw

6ovsh4lw1#

你提到的很好,但我建议 yyyyMMdd 格式,因为它排序更好,比视觉更标准化 03/05 不知道哪一天,哪一个月。
如果您想一天运行两次,并且您关心作业运行的时间,那么请执行 PARTITIONED BY (dt STRING, hour STRING) 另外,不要使用 STORED AS TEXT . 用Parquet地板或兽人代替。

相关问题