未使用 sqoop import-all 创建表
Posted
技术标签:
【中文标题】未使用 sqoop import-all 创建表【英文标题】:Table not getting created using 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'
【问题讨论】:
【参考方案1】:Sqoop Hive 导入当前与--as-avrodatafile
和--as-sequencefile
不兼容。请访问Sqoop Hive Import Documentation获取更多信息。
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。
【讨论】:
--create-hive-table 参数。此选项表示如果表不存在,它将创建它。 来自 avro cwiki.apache.org/confluence/display/Hive/AvroSerDe.. 的 crate hive 表以上是关于未使用 sqoop import-all 创建表的主要内容,如果未能解决你的问题,请参考以下文章