gpt4 book ai didi

hadoop - 在 hive 和 hadoop streaming-api 输出之间共享数据

转载 作者:可可西里 更新时间:2023-11-01 15:41:29 26 4
gpt4 key购买 nike

我有几个 hadoop 流式 api 程序并使用此输出格式生成输出:“org.apache.hadoop.mapred.SequenceFileOutputFormat”流式 api 程序可以读取输入格式为“org.apache.hadoop.mapred.SequenceFileAsTextInputFormat”的文件。

输出文件中的数据如下所示。

val1-1,val1-2,val1-3
val2-1,val2-2,val2-3
val3-1,val3-2,val3-3

现在我想用配置单元读取输出。我用这个脚本创建了一个表:

CREATE EXTERNAL 
TABLE IF NOT EXISTS table1
(
col1 int,
col2 string,
col3 int
)
PARTITIONED BY (year STRING,month STRING,day STRING,hour STRING)
ROW FORMAT DELIMITED
FIELDs TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileAsTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileOutputFormat'
LOCATION '/hive/table1';

当我用query查询数据时

select * from table1

结果会是

val1-2,val1-3
val2-2,val2-3
val3-2,val3-3

第一列似乎被忽略了。我认为 hive 只是使用值作为输出而不是键。有什么想法吗?

最佳答案

你是对的。目前 Hive 的局限性之一是忽略序列文件格式中的键。到目前为止,我指的是 Hive 0.7,但我相信这也是 Hive 0.8 和 Hive 0.9 的限制。

要避免这种情况,您可能必须创建一个新的输入格式,其键为空,值是您当前键和值的组合。抱歉,我知道这不是您要找的答案!

关于hadoop - 在 hive 和 hadoop streaming-api 输出之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429207/

26 4 0