最近我在hive上的一个虚拟机上运行了一些基本脚本。在我之前使用的apachedistribution上,下面的大部分都工作得很好,但在phd版本上,where、sum、group by或基本上任何操作都没有正确响应。但是,数据是可用的,如下面的选择命令的o/p所示。除了下面的第一个select语句之外,所有的操作和查询都得到空值。
让我知道,如果有人面临这样一个问题,他们的设置。
创建表:
create external table ytd (video_id string, uploader string, age int, category string, length int, views int, rate float, ratings int, comments int, rid1 string, rid2 string, rid3 string, rid4 string, rid5 string, rid6 string, rid7 string, rid8 string, rid9 string, rid10 string, rid11 string, rid12 string, rid13 string, rid14 string, rid15 string, rid16 string, rid17 string, rid18 string, rid19 string, rid20 string) row format delimited fields terminated by '\n' stored as textfile location '/joker/ytd/crawl';
以下命令输出:从ytd limit=5选择*;6hnrbd4kkmg acepuppers 790新闻与政治75 501976 4.19 1183 3543 ejsaf9t-ql8 eqpoxwaavri khg6n2ugrwy tzrqngd\u 0o 5ql uembqdy ufatpr4gvfo fqvey0l7lzu 2yxpilh5148 mhoyuddqpdo ev17\u kl1cu4 mapixe83l\u c mh4ryakdjxm ms3lcpgek14 xls3jasbznk 86y4g3\u vi4 vpzdq6ux8p0 w-5pms72s-e msamwlznhbe gb2lovbagou 67boaashv4i null null零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零零jygqaaupvxq 7n3pzhhxsmg nmoqsul6doq pnignflt52q nticice6dmc mtij0ez5ggw null null null zqgvad7x5zo操作05 790新闻与政治204 76850 4.36 400 1451 rk8syx2b zq vs7t4xehg6k uk3isbd0yoq s-py0oowffm vzvmqht96bmqpcjixeu\u ta 7b2jlenkflw bhm8ylju79g nuz3k\uuuu ipj0 fve4ovu nfg jgpkxrmdtto ghubmqmusqk 4qcjvttng mi5dotcf8eq 30\ u bw6vux7a xh0b9wbp9jw hlcu6qri9pw b0gfx-xu5uo ehqaalhzhoc csbzmd-l8n8 null null null 6vbwq34lvks staffgrillo 790新闻与政治307 218869 4.85 763 298 9uwcfxrxsw0-yjn0pq8mgw xoxw2antofe 4b7sxgrkr0c z5 WORYUVG nwqt9w5rjmk jc\U UNBHZG zcaux9mk-i4 IN 5NSN9NXQ8 pf7 uct1qn4-kspaaebwbm 5uiozihv1t4 jf6xgrubtsm m3gbhldjhbw f9i0hl\U eo4k kegkbkhltgw b3fyiw2j2ek 9jps\U fui\U la 7w55tr\U wrfs zj4n6phnz10 null null nullnull null wuz3szt8bca NTCOOLDOOL790新闻与政治54 209286 3.44 334 787u ahlduhexqy qtybkaev6o xls3jasbznk 3e9hvdbwg-e 6hnrbd4kkmg zqgvad7x5zo 5ql uembqdy ay3fceluxu eqpoxwaavri tzrrqngd \u 0o sjjpvypzvog tvn0 c3pcwx3cgv8 fqvey0l7lzu qszmigkklu 2yxpilh5148 mh4ryakdjxmqpcjixeu \u ta yuyp4t0j8ow qonwdfqgsik空空空空空空
其他SQL已尝试。选择类别,从本年迄今按类别分组计算();选择类别,按类别从ytd组中计数(视频\u id);从年初至今中选择不同的类别;从ytd中选择count(distinct(video_id));
解释另一个sql的计划。explain select count()from ytd where category='news&politics';
ok抽象语法树:(tok_query(tok_from(tok_tabref(tok_tabname ytd)))(tok_insert(tok_destination(tok_dir tok_tmp_file))(tok_select(tok_selexpr(tok_functionstar count)))(tok_where(=(tok_table_or_col category)‘news&politics’))
阶段依赖关系:阶段1是根阶段阶段阶段0是根阶段
阶段计划:阶段:阶段1 map reduce alias->map operator tree:ytd tablescan alias:ytd filter operator predicate:expr:(category='news&politics')type:boolean select operator group by operator aggregations:expr:count()bucketgroup:false模式:hash outputcolumnnames:\u col0 reduce output operator排序顺序:标记:-1值表达式:expr:\u col0 type:bigint reduce operator tree:group by operator aggregations:expr:count(value.\u col0)bucketgroup:false模式:mergepartial outputcolumnnames:\u col0选择运算符表达式:expr:\u col0 type:bigint outputcolumnnames:\u col0文件输出运算符compressed:false globaltableid:0表:输入格式:org.apache.hadoop.mapred.textinputformat输出格式:org.apache.hadoop.hive.ql.io.hiveignorekeytextoutputformat
阶段:阶段0获取运算符限制:-1
1条答案
按热度按时间uajslkp61#
出现空值的可能原因是磁盘文件中的数据类型与外部表的ddl之间不匹配。
试试这个:
您可能会看到所有的空值-这是所描述的问题的症状。我怀疑外部文件和表定义之间的数据类型不匹配。在这种情况下,select*似乎仍然有效,但它只是一个幻影。您需要选择单个列来验证ddl是否正确。