我已经创建了一个配置单元表,它在一列上具有动态分区。有没有一种方法可以使用“loaddata”语句直接从文件中加载数据?或者我们只需要创建一个非分区中间表并将文件数据加载到其中,然后将数据从这个中间表插入到分区表中,就像在分区表中加载配置单元中提到的那样?
xxhby3vn1#
如果我们需要直接插入,就需要手动指定分区。对于动态分区,我们需要暂存表,然后从那里插入。
j91ykkif2#
不,load data命令只将文件复制到目标目录。它不读取输入文件的记录,因此不能基于记录值进行分区。如果您的输入数据已经基于分区分割成多个文件,您可以直接将这些文件复制到您手动创建的分区目录下的hdfs中的表位置(如果是外部表,则只指向它们的当前位置),然后使用下面的alter命令添加分区。这样就可以完全跳过load data语句。
ALTER TABLE <table-name> ADD PARTITION (<...>)
2条答案
按热度按时间xxhby3vn1#
如果我们需要直接插入,就需要手动指定分区。
对于动态分区,我们需要暂存表,然后从那里插入。
j91ykkif2#
不,load data命令只将文件复制到目标目录。它不读取输入文件的记录,因此不能基于记录值进行分区。
如果您的输入数据已经基于分区分割成多个文件,您可以直接将这些文件复制到您手动创建的分区目录下的hdfs中的表位置(如果是外部表,则只指向它们的当前位置),然后使用下面的alter命令添加分区。这样就可以完全跳过load data语句。