如何通过特定列对hive进行分区?

时间:2013-08-26 18:43:32

标签: hadoop hive

我有3列:用户,日期时间和数据

我的数据以空格分隔,每行由新行分隔

现在我正在使用regexserde来读取我的输入,但是我想要由用户进行分区。如果我这样做,用户就不能再是一个列了,对吗?如果是这样,我如何将数据加载到表格中?

2 个答案:

答案 0 :(得分:0)

在Hive中,每个分区对应一个HDFS中的文件夹。您可以使用create-table-as-select(CTAS)语句将未分区的Hive表中的数据重新加载到新的分区HIve表中。有关详细信息,请参阅https://cwiki.apache.org/Hive/languagemanual-ddl.html#LanguageManualDDL-CreateTable

答案 1 :(得分:0)

您可以在当前目录下的子目录中订购HDFS中的数据,目录名称必须采用PART_NAME=PART_VALUE格式。 如果您的数据被拆分为文件,在每个文件中只有一种类型的“用户”,只需创建与用户名对应的目录(例如USERNAME=XYZ),并将与该用户名匹配的所有文件放在其目录中。 /> 接下来,您可以创建一个带分区的外部表(请参阅example) 唯一的问题是你必须定义数据中的“user”列(但你可以忽略它)并查询另一列(USERNAME),这将提供所需的分区修剪。 / p>

相关问题