【问题标题】:How to use 'create-hive-table' with Sqoop correctly?如何正确使用带有 Sqoop 的“create-hive-table”?
【发布时间】:2017-11-13 19:10:06
【问题描述】:

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

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

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

这是我的代码

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 在作业期间创建。

PS:我也找不到任何理由将--m 1 与 Sqoop 一起使用。它存在于所有查询中。

【问题讨论】:

    标签: mysql hadoop hive hdfs sqoop


    【解决方案1】:

    我使用以下查询进行了导入。不需要写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 "," ;
    

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多