Hive读取序列文件

时间:2015-01-06 17:43:02

标签: hadoop hive

我在查询存储为Sequencefile格式的表时,在Hive表中看到的二进制数据存在问题。

我使用Sqoop从Databse导入指定以下选项的数据:

--as-sequencefile --fields-terminated-by '\001' --null-string '\\N' --null-non-string '

创建了一个Hive外部表,指向我导入DB Data的位置:

CREATE EXTERNAL TABLE if not exists Test(
test_id string,
s_date timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS sequencefile 
LOCATION '<location where i importedsqoop data>

我在想我的Hive tabe会反序列化数据并以可读格式显示数据,但我将数据视为二进制或不可读的foramt。

为了让配置单元反序列化数据,是否还需要执行其他步骤?

谢谢。尼什。

2 个答案:

答案 0 :(得分:1)

Sqoop的序列文件输出似乎与序列文件的Hive默认SerDe不兼容。有一个Github项目Hive-Sqoop-Serde可能就是你需要的。

答案 1 :(得分:1)

您还必须声明输入和输出格式。像这样创建表:

CREATE EXTERNAL TABLE if not exists Test(
test_id string,
s_date timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS sequencefile 
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'
LOCATION '<location where i importedsqoop data>