簡體   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