我在查询存储为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。
为了让配置单元反序列化数据,是否还需要执行其他步骤?
谢谢。尼什。
答案 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>