2016-12-31 33 views
1

我想爲基於AVRO的表創建不同的架構。以下是m使用的命令。我可以看到具有.avro擴展名的所有數據文件的正確目錄結構,但是當我登錄到HIVE &時,執行show table; retail_avro.db模式下不存在表表未使用sqoop導入全部創建

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命令:

[[email protected] ~]$ 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 
[[email protected] ~]$ 
[[email protected] ~]$ 
[[email protected] ~]$ 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' 

回答

0
  1. Sqoop蜂巢進口是目前--as-avrodatafile--as-sequencefile不兼容。請訪問Sqoop Hive Import Documentation以獲取有關它的更多信息。

  2. avrodatafile需要.avsc架構和avroSerde創建avro格式表。由於您正在生成avro文件,因此您還需要avroschema。這裏Sqoop與avrodatafile不兼容,因此--create-hive-table參數被gettind忽略,因此Sqoop無法創建Hive表,但它會在所需的目錄中將數據導入.avro格式,因爲其他參數是正確和受支持的。

您仍然可以生成.avsc架構並在相同的數據上創建表。你可以按照這個Sqoop avro import blog這樣做。

請訪問Hive Avro SerDe documentation更多地瞭解avrofile格式

0

您尚未在配置單元中創建表。

as「show tables;」沒有返回任何東西。

請參考7.2.10。將數據導入配置單元link

注意:在使用sqoop導入或導出數據時,您必須創建表或應存在的表。

出口到關係數據庫管理系統 - 表必須出示

出口到HIVE - 表可以創建信,因爲它傾倒在HDF數據。

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

+0

那麼什麼是使用這種--create蜂箱表參數的個數??? – AJm

+0

--create-hive-table args。這個選項說如果表不存在,它會創建它。 – AJm

+0

箱子配置單元表avro https://cwiki.apache.org/confluence/display/Hive/AvroSerDe .. –