繁体   English   中英

使用Sqoop从MySQL导入到Hive

[英]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种方法:

  1. MySQL->非分区Hive表->从非分区Hive表插入分区Hive表
  2. MySQL->分区的Hive表
  3. MySQL->未分区的Hive表-> ALTER未分区的Hive表添加PARTITION

    1. 我目前正在经历的痛苦

    2. 我读到对此的支持是在Hive和Sqoop的更高版本中添加的,但找不到示例

    3. 该语法要求将分区指定为键值对-在数百万条记录中无法想到所有分区键值对的情况下不可行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"

一些限制:

  • 它仅允许一个分区键/值
  • 将分区键的类型硬编码为字符串
  • 在hive 0.7中使用自动分区时,我们可能希望将其调整为仅具有一个命令行选项作为键名,并使用db表中的该列进行分区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM