[英]Import from MySQL to Hive using Sqoop
我必须通过Sqoop从MySQL表(具有复合主键)中导入> 4亿行到PARTITIONED Hive表Hive中。 该表包含两年的数据,列的离开日期为20120605至20140605,一天的数千条记录。 我需要根据出发日期对数据进行分区。
版本:
Apache Hadoop-1.0.4
Apache Hive-0.9.0
Apache Sqoop-sqoop-1.4.2.bin__hadoop-1.0.0
据我所知,有3种方法:
MySQL->未分区的Hive表-> ALTER未分区的Hive表添加PARTITION
是我目前正在经历的痛苦
我读到对此的支持是在Hive和Sqoop的更高版本中添加的,但找不到示例
该语法要求将分区指定为键值对-在数百万条记录中无法想到所有分区键值对的情况下不可行3。
谁能提供方法2和方法3的输入?
我想您可以创建一个配置单元分区表。
然后为其编写sqoop导入代码。
例如:
sqoop import --hive-overwrite --hive-drop-import-delims --warehouse-dir“ / warehouse” --hive-table \\ --connect jdbc <mysql path> / DATABASE = xxxx \\ --table --username xxxx --password xxxx --num-mappers 1 --hive-partition-key --hive-partition-value --hive-import \\ --fields终止于','--lines终止于'\\ n'
您必须先创建分区表结构,然后才能将数据移动到表中。 进行sqoop时,无需指定--hive-partition-key和--hive-partition-value,请使用--hcatalog-table而不是--hive-table。
马努
如果这仍然是人们想要了解的东西,他们可以使用
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"
一些限制:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.