如何使用' create-hive-table'用Sqoop正确吗?

时间:2017-11-13 19:10:07

标签: mysql hadoop hive hdfs sqoop

我尝试使用Sqoop将数据从MySQL表导入Hive。根据我的理解,有两种方法可以做到这一点。

  1. 将数据导入HDFS,然后在Hive中创建外部表并将数据加载到该表中。

  2. 在运行Sqoop查询时使用create-hive-table在Hive中创建一个新表并直接将数据加载到该表中。我试图这样做,但由于某种原因不能这样做

  3. 这是我的代码

    sqoop import \
    --connect jdbc:mysql://localhost/EMPLOYEE \
    --username root \
    --password root \
    --table emp \
    --m 1 \
    --hive-database sqoopimport \
    --hive-table sqoopimport.employee \
    --create-hive-table \
    --fields-terminated-by ',';
    

    我也尝试使用--hive-import,但收到了错误。 当我运行上述查询时,作业成功但是在hive中没有创建表,并且数据存储在\user\HDFS\emp\位置,其中\HDFS\emp在作业期间创建了--m 1

    PS:我也找不到将$ids = Get-EC2Instance -Filter @( @{name='tag:Name'; values="*EXAMPLE*"}) | Select-Object -ExpandProperty instances | Sort-Object $_.Tag.Value 与Sqoop一起使用的任何理由。它只是在所有查询中。

1 个答案:

答案 0 :(得分:0)

我的导入使用以下查询。无需编写create-hive-table我们只需用hive-table编写新表名,即可创建该表。如果有任何问题,请转到hive-metastore位置并运行rm *.lck,然后再次尝试导入。

sqoop import \
--connect jdbc:mysql://localhost/EMPLOYEE \
--username root \
--password root \
--table emp4 \
--hive-import \
--hive-table sqoopimport.emp4 \
--fields-terminated-by "," ;