Table 没有使用 sqoop import-all 创建

Table not getting created using sqoop import-all

我正在尝试为基于 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'

您尚未在配置单元中创建 table。

as "show tables;" 没有返回任何东西。

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

注意:使用 sqoop 导入或导出数据时,您必须创建 table 或 table 应该存在。

导出到 RDMS - table 必须提供

导出到 HIVE -- Table 可以在将数据转储到 HDF 上时创建字母。

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

  1. Sqoop Hive 导入当前与 --as-avrodatafile--as-sequencefile 不兼容。请访问 Sqoop Hive Import Documentation 以获取更多信息。

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

您仍然可以生成 .avsc 架构并在同一数据上创建 table。您可以按照此 Sqoop avro import blog 进行操作。

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