作为我需求的一部分,我必须创建一个新的配置单元表,并以编程方式插入其中。为此,我使用以下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”),并从代码中插入它。如果不建议添加日期(字符串格式),有没有更好的方法来实现我的需求的分区思想?
1条答案
按热度按时间6ovsh4lw1#
你提到的很好,但我建议
yyyyMMdd
格式,因为它排序更好,比视觉更标准化03/05
不知道哪一天,哪一个月。如果您想一天运行两次,并且您关心作业运行的时间,那么请执行
PARTITIONED BY (dt STRING, hour STRING)
另外,不要使用STORED AS TEXT
. 用Parquet地板或兽人代替。