【问题标题】:Table not getting created using sqoop import-all未使用 sqoop import-all 创建表
【发布时间】:2016-12-31 03:05:13
【问题描述】:

我正在尝试为基于 AVRO 的表创建不同的架构。下面是 m 使用的命令。我可以看到所有带有 .avro 扩展名的数据文件的正确目录结构,但是当我登录 HIVE 并执行显示表时;在retail_avro.db 模式下没有表

sqoop import-all-tables \
--m 2 \
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \
--username=retail_dba \
--password=cloudera \
--warehouse-dir=/user/hive/warehouse/retail_avro.db \
--create-hive-table \
--as-avrodatafile

如果我使用 hdfs 命令访问,下面的命令是输出:

[cloudera@quickstart ~]$ hdfs dfs -ls /user/hive/warehouse/retail_avro.db
Found 6 items
drwxr-xr-x   - cloudera hive          0 2016-12-30 04:25 /user/hive/warehouse/retail_avro.db/categories
drwxr-xr-x   - cloudera hive          0 2016-12-30 04:25 /user/hive/warehouse/retail_avro.db/customers
drwxr-xr-x   - cloudera hive          0 2016-12-30 04:25 /user/hive/warehouse/retail_avro.db/departments
drwxr-xr-x   - cloudera hive          0 2016-12-30 04:25 /user/hive/warehouse/retail_avro.db/order_items
drwxr-xr-x   - cloudera hive          0 2016-12-30 04:26 /user/hive/warehouse/retail_avro.db/orders
drwxr-xr-x   - cloudera hive          0 2016-12-30 04:26 /user/hive/warehouse/retail_avro.db/products
[cloudera@quickstart ~]$
[cloudera@quickstart ~]$
[cloudera@quickstart ~]$ hdfs dfs -ls /user/hive/warehouse/retail_avro.db/categories
Found 3 items
-rw-r--r--   1 cloudera hive          0 2016-12-30 04:25 /user/hive/warehouse/retail_avro.db/categories/_SUCCESS
-rw-r--r--   1 cloudera hive       1007 2016-12-30 04:25 /user/hive/warehouse/retail_avro.db/categories/part-m-00000.avro
-rw-r--r--   1 cloudera hive        959 2016-12-30 04:25 /user/hive/warehouse/retail_avro.db/categories/part-m-00001.avro

当我登录 HIVE 时:

 hive> use retail_avro;
    OK
    Time taken: 1.942 seconds
    hive> show tables;
    OK
    Time taken: 0.518 seconds
    hive> select * from departments;
    FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'departments'

【问题讨论】:

    标签: hive avro sqoop


    【解决方案1】:
    1. Sqoop Hive 导入当前与--as-avrodatafile--as-sequencefile 不兼容。请访问Sqoop Hive Import Documentation获取更多信息。

    2. avrodatafile 需要.avsc 架构和avroSerde 来创建avro 格式表。由于您正在生成avro 文件,因此您还需要avroschema。这里 Sqoop 与 avrodatafile 不兼容,因此 --create-hive-table 参数被忽略,因此 Sqoop 无法创建 Hive 表,但它会将数据导入所需目录中的 .avro 格式,因为其他参数正确且受支持。

    您仍然可以生成.avsc 架构并在相同数据上创建表。你可以关注这个Sqoop avro import blog 这样做。

    请访问Hive Avro SerDe documentation了解更多关于avrofile格式的信息

    【讨论】:

      【解决方案2】:

      您还没有在 hive 中创建表。

      作为“显示表格;”没有退回任何东西。

      请转到 7.2.10 节。将数据导入 Hive link

      注意:使用 sqoop 导入或导出数据时,您必须创建表或应显示的表。

      导出到 RDMS - 表必须存在

      导出到 HIVE -- 可以在将数据转储到 HDF 时创建表。

      去扔https://cwiki.apache.org/confluence/display/Hive/AvroSerDe

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2016-11-25
      相关资源
      最近更新 更多