![](/img/trans.png)
[英]How can I partition a hive table by (only) a portion of a timestamp column?
[英]How do I partition in hive by a specific column?
我有3列:用户,日期时间和数据
我的数据用空格分隔,每一行用新行分隔
现在,我正在使用regexserde读取输入内容,但是我想按用户进行分区。 如果我不再将该用户用作列,对吗? 如果是这样,如何将数据加载到表中?
在Hive中,每个分区对应于HDFS中的一个文件夹。 您可以使用create-table-as-select(CTAS)语句将数据从未分区的Hive表重新加载到新的分区HIve表中。 有关更多详细信息,请参见https://cwiki.apache.org/Hive/languagemanual-ddl.html#LanguageManualDDL-CreateTable 。
您可以在HDFS中当前目录下的子目录中订购数据,目录名称的格式PART_NAME=PART_VALUE
。
如果将数据拆分为文件,每个文件中只有一种类型的“用户”,则只需创建对应于用户名的目录(例如USERNAME=XYZ
),然后将与该用户名匹配的所有文件放入其目录中。
接下来,您可以创建一个带有分区的外部表(请参阅示例 )。
唯一的问题是,无论如何,您都必须定义数据中的“用户”列(但您可以忽略它),并查询另一列( USERNAME
),该列将提供所需的分区修剪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.