我不得不从一个MySQL表(具有复合主键)到经由Sqoop分区蜂巢蜂房表导入“400万行。 该表有两年,一列日期,从20120605到一天的记录20140605和成千上万的数据。 我需要分区根据出发日期的数据。
版本:
Apache的Hadoop的 - 1.0.4
Apache的蜂巢 - 0.9.0
阿帕奇Sqoop - sqoop-1.4.2.bin__hadoop-1.0.0
按我的知识,有3种方法:
- MySQL的 - >非分区蜂巢表 - 从非分区蜂巢表> INSERT到分区蜂巢表
- MySQL的 - >分区蜂巢表
MySQL的 - >非分区蜂巢表 - > ALTER非分区蜂巢表中添加PARTITION
是我在下面的当前阵痛
我读了这个支持加在后面的(?)蜂房和Sqoop的版本,但无法找到一个例子
语法决定指定分区,键值对 - 数以百万计的人们不能认为所有的分区键值对3的记录情况下不可行。
任何人都可以提供方案2和3的投入?
我想你可以创建一个蜂巢的分区表。
然后为它编写的sqoop导入代码。
例如:
sqoop进口--hive重写--hive滴导入-delims --warehouse-DIR “/仓库” --hive表\ --connect JDBC <MySQL的路径> / DATABASE = XXXX \ --table --username XXXX XXXX --password --num映射器1 --hive分区密钥--hive分区值--hive导入\ --fields封端-由 '' --lines封端逐“\ N”
你必须先创建一个分区表的结构,你移动你的数据之前表到分区表。 虽然sqoop,无需指定--hive分区键和--hive分区值,使用--hcatalog表,而不是--hive表。
马努
如果这仍是一些人想了解,他们可以使用
sqoop import --driver <driver name> --connect <connection url> --username <user name> -P --table employee --num-mappers <numeral> --warehouse-dir <hdfs dir> --hive-import --hive-table table_name --hive-partition-key departure_date --hive-partition-value $departure_date
从补丁说明:
sqoop import [all other normal command line options] --hive-partition-key ds --hive-partition-value "value"
一些限制:
- 只允许一个分区键/值
- 硬编码类型的分区键是一个字符串
- 随着蜂巢0.7自动分区,我们可能需要调整这只是为重点的名字一个命令行选项,并使用该列从数据库表进行分区。