表没有使用sqoop import-all创建

时间:2016-12-31 03:05:13

标签: hive avro sqoop

我正在尝试为基于AVRO的表创建不同的架构。下面是命令m using。我可以看到正确的目录结构,其中包含所有带.avro扩展名的数据文件,但是当我登录HIVE&执行show tables;在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'

2 个答案:

答案 0 :(得分:0)

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

as" show tables;"没有归还任何东西。

请扔掉 7.2.10。将数据导入Hive link

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

导出到RDMS - 表必须出现

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

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

答案 1 :(得分:0)

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

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

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

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