gpt4 book ai didi

hadoop - 查询包含水槽流的外部表时出现 Hive 错误

转载 作者:可可西里 更新时间:2023-11-01 16:08:55 26 4
gpt4 key购买 nike

在 CDH 5.4 上,我正在尝试使用以下方法在 Twitter 分析上创建演示:

  1. 用于将推文捕获到 HDFS 文件夹中的 Flume
  2. 使用 Hive-Serde 查询推文的 Hive

第一步成功。我可以看到正在捕获推文并将其正确定向到所需的 HDFS 文件夹。我观察到首先创建了一个临时文件,然后将其转换为永久文件:

-rw-r--r--   3 root hadoop       7548 2015-10-06 06:39 /user/flume/tweets/FlumeData.1444127932782
-rw-r--r-- 3 root hadoop 10034 2015-10-06 06:39 /user/flume/tweets/FlumeData.1444127932783.tmp

我正在使用下表声明:

CREATE EXTERNAL TABLE tweets(
id bigint,
created_at string,
lang string,
source string,
favorited boolean,
retweet_count int,
retweeted_status
struct<text:string,user:struct<screen_name:string,name:string>>,
entities struct<urls:array<struct<expanded_url:string>>,
user_mentions:array<struct<screen_name:string,name:string>>,
hashtags:array<struct<text:string>>>,
text string,
user struct<location:string,geo_enabled:string,screen_name:string,name:string,friends_count:int,followers_count:int,statuses_count:int,verified:boolean,utc_offset:int,time_zone:string>,
in_reply_to_screen_name string)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'hdfs://master.ds.com:8020/user/flume/tweets';

但是当我查询这个表时,我得到以下错误:

hive> select count(*) from tweets;

Ended Job = job_1443526273848_0140 with errors
...
Diagnostic Messages for this Task:
Error: java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderCreation
... 11 more

Caused by: java.io.FileNotFoundException: File does not exist: /user/flume/tweets/FlumeData.1444128601078.tmp
at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:66)
...

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:

Stage-Stage-1: Map: 2 Reduce: 1 Cumulative CPU: 1.19 sec HDFS Read: 10492 HDFS Write: 0 FAIL

我认为问题与临时文件有关,Hive 查询生成的 map-reduce 作业未被读取。能否有一些解决方法或配置更改来成功处理此问题?

最佳答案

我有同样的经历,我通过在我的水槽配置文件中添加下面的 hdfs 接收器配置来解决它
some_agent.hdfssink.hdfs.inUsePrefix = .
hdfs.inUseSuffix = .temp

希望对你有帮助。

关于hadoop - 查询包含水槽流的外部表时出现 Hive 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32968450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com