hive读取序列文件

lf3rwulv  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(318)

在查询存储为sequencefile格式的表时,我遇到了一个有关配置单元表中的二进制数据的问题。
我使用sqoop从指定了以下选项的数据库导入数据:

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

创建了一个配置单元外部表以指向我导入db数据的位置:

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>

我认为我的配置单元选项卡将反序列化数据并以可读格式显示数据,但我将数据视为二进制或不可读的foramt。
为了让配置单元反序列化数据,是否还需要执行其他步骤?
谢谢您。尼什。

u4vypkhs

u4vypkhs1#

您还必须声明输入和输出格式。创建如下表:

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>
zsbz8rwp

zsbz8rwp2#

似乎sqoop的序列文件输出与序列文件的配置单元默认serde不兼容。您可能需要一个github项目hivesqoopserde。

相关问题