我们正在尝试导入平面大型机文件以加载到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
答案 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导入命令。它应该工作。