我在HDFS中有一个日志文件,值由逗号分隔.例如:
2012-10-11 12:00,opened_browser,userid111,deviceid222
现在我想将此文件加载到Hive表,该表具有"timestamp","action"列,并由"userid","deviceid"分区.我如何让Hive将日志文件中的最后2列作为表的分区?所有示例e.g. "hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');"都需要在脚本中定义分区,但我希望从HDFS文件自动设置分区.
一个解决方案是创建具有所有4列的中间非分区表,从文件填充它然后创建一个INSERT into first_table PARTITION (userid,deviceid) select from intermediate_table timestamp,action,userid,deviceid;但是这是另外的任务,我们将有2个非常类似的表.或者我们应该创建外部表作为中间.
我正在使用Hive 0.9.0,我正在尝试执行查询即
`SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date;`
Run Code Online (Sandbox Code Playgroud)
但它返回错误"loop(...)+与输入不匹配....".Hive是否像Oracle DB一样支持FROM中的多个子查询?
关于namenode物理机上的硬盘大小有什么建议吗?当然,它不像 datanode 那样存储来自 HDFS 的任何数据,但是在创建集群时我应该依赖什么?
我在Hive中有2个表 - 第一个是外部的,第二个是管理的.使用INSERT OVERWRITE ... SELECT FROM external_table从外部填充托管表.这两个表都是用','分隔的行创建的.当我运行选择查询到文件时,结果文件中的分隔符是Tab,但我需要逗号.如何将其更改为逗号,我看不到它的属性.