如何使用sqoop import-mainframe定义hive表结构--create-hive-table command

时间:2016-08-24 16:04:42

标签: sqoop

我们正在尝试导入平面大型机文件以加载到hive表中。我能够使用sqoop import-mainframe导入并加载到hive表,但我的整个文件放在一列中,而且列中没有名称。

是否有可能在sqoop import命令中定义表结构?

我们使用以下命令从大型机导入并将其加载到Hive表

sqoop import-mainframe --connect mainframe.com --dataset mainframedataset --username xxxxx -P --hive-import --create-hive-table --hive-table table1 --warehouse-dir /warehouse/

示例大型机数据:

  

ASWIN | 1234 | 1000.00
XXXX | 1235 | 200.00
YYYY | 1236 | 150.00

由sqoop生成的Hive表创建脚本:

CREATE TABLE Employee ( DEFAULT_COLUMN STRING) COMMENT 'Imported by sqoop on 2016/08/26 02:12:04' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' LINES TERMINATED BY '\012' STORED AS TEXTFILE

1 个答案:

答案 0 :(得分:0)

根据Sqoop docs

  

默认情况下,数据集中的每条记录都存储为文本记录,末尾有换行符。假定每个记录包含名为DEFAULT_COLUMN的单个文本字段。当Sqoop将数据导入HDFS时,它会生成一个Java类,可以重新解释它创建的文本文件。

您的psv文件将加载到HDFS。

现在使用 -

创建table1 hive table

CREATE TABLE table1 (Name string, Empid int,Amount float) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LINES TERMINATED BY '\012' STORED AS TEXTFILE

现在运行没有--create-hive-table标记的sqoop导入命令。它应该工作。