我必须通过sqoop将超过4亿行从mysql表(具有复合主键)导入到分区的配置单元表配置单元中。该表有两年的数据,列离开日期从20120605到20140605不等,一天有数千条记录。我需要根据出发日期对数据进行分区。
版本:
apache hadoop-1.0.4版
apache配置单元-0.9.0
apache sqoop-sqoop-1.4.2.bin\u hadoop-1.0.0版本
据我所知,有三种方法:
mysql->非分区配置单元表->从非分区配置单元表插入分区配置单元表
mysql->分区配置单元表
mysql->non-partitioned hive table->alter non-partitioned hive table添加分区
是我正在关注的最痛苦的一个
我读到hive和sqoop的后续(?)版本中增加了对此的支持,但是找不到一个示例
语法规定将分区指定为键值对—在数百万条记录的情况下不可行,其中无法想到所有分区键值对3。
有人能为方法2和3提供意见吗?
3条答案
按热度按时间9rnv2umw1#
如果这仍然是人们想要理解的,他们可以使用
补丁中的注解:
一些限制:
它只允许一个分区键/值
将分区键的类型硬编码为字符串
对于hive0.7中的自动分区,我们可能希望将其调整为只有一个命令行选项作为键名,并使用db表中的该列作为分区。
5ktev3wc2#
我想您可以创建一个hive分区表。
然后为它编写sqoop导入代码。
例如:
sqoop import--hive overwrite--hive drop import delims--warehouse dir“/warehouse”--hive table--connect jdbc/database=x--table--username x--password x--num mappers 1--hive partition key--hive partition value--hive import--fields terminated by','--line terminated by'\n'
a64a0gku3#
必须先创建分区表结构,然后才能将数据移动到分区表中。在使用sqoop时,不需要指定--hive partition key和--hive partition value,请使用--hcatalog table而不是--hive table。
马努