Hive 读取序列文件

Hive Reading a sequence File

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

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

--as-sequencefile --fields-terminated-by '[==]1' --null-string '\N' --null-non-string '

创建了一个 Hive 外部 table 以指向我导入数据库数据的位置:

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

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

我是否需要执行更多步骤才能让 Hive 反序列化数据?

谢谢。尼什。

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

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

CREATE EXTERNAL TABLE if not exists Test(
test_id string,
s_date timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '[=10=]1'
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>