我想知道为啥我使用 sqoop 从 sqlserver 导入的 hive db 中的表正在消失
Posted
技术标签:
【中文标题】我想知道为啥我使用 sqoop 从 sqlserver 导入的 hive db 中的表正在消失【英文标题】:I wanted to know why the tables from hive db which I imported from sqlserver using sqoop is disappearing我想知道为什么我使用 sqoop 从 sqlserver 导入的 hive db 中的表正在消失 【发布时间】:2018-01-04 05:01:03 【问题描述】:所以我正在尝试将所有表导入 hive db,即 hdfs 上的 user/hive/warehouse/...,使用以下命令:
sqoop import-all-tables --connect "jdbc:sqlserver://<servername>;database=<dbname>" \
--username "<username>" \
--password "<password>" \
--warehouse-dir "/user/hive/warehouse/" \
--hive-import \
-m 1
在testdatabase我有3个表,当mapreduce运行时,输出成功, 即,mapreduce 作业已 100% 完成,但在 hive db 上找不到该文件。
【问题讨论】:
你检查了 HDFS 中的哪个路径? 来自 sqlserver 的文件应该进入“/user/hive/warehouse”目录,但现在目录中只看到一个表,我弹出这个:“路径不存在在 HDFS 或 WebHDFS 上已禁用。请检查您的路径或启用 WebHDFS" 【参考方案1】:它基本上被最后一个表覆盖了,尝试删除目录路径末尾的正斜杠。对于测试,我建议不要使用仓库目录,使用类似'/tmp/sqoop/allTables'
【讨论】:
我不确定它是否会被覆盖,因为现在我正在尝试创建一个 Hive 表,它在创建后显示 OK> 并在“显示表”中给出表名;命令,但是当我手动签入仓库时,该表不存在。这就是我创建表的方式: CREATE EXTERNAL TABLE IF NOT EXISTS XYZ(Code VARCHAR(25), Address(25), Date DATE, Type VARCHAR(25)) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE location ' /user/hive/warehouse/xyz';【参考方案2】:还有一种方法 1.创建一个指向一个位置的hive数据库说“targetLocation” 2. 使用之前创建的数据库在您的 sqoop 导入中创建 hcatalog 表。 3. 使用目标目录导入选项指向目标位置。
【讨论】:
【参考方案3】:你不需要定义仓库目录。只需定义hive数据库它会自动找到工作目录。
sqoop import-all-tables --connect "jdbc:sqlserver://xxx.xxx.x.xxx:xxxx;databaseName=master" --username xxxxxx --password xxxxxxx --hive-import --create-hive-table --hive-database test -m 1
它会像火箭一样运行。
希望它对你有用....
【讨论】:
以上是关于我想知道为啥我使用 sqoop 从 sqlserver 导入的 hive db 中的表正在消失的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 Azkaban 中的 Sqoop 任务在选择列后卡住了?