Hadoop 配置单元:创建分区后带有目录的外部表(在位置中声明)

Hadoop 配置单元:创建分区后带有目录的外部表(在位置中声明),hadoop,hive,Hadoop,Hive,我有一个转储数据的目录: "/externallocation/data/20191123/foo_table/part-00000.orc" 我需要创建一个外部表,指向上面提到的目录。 下面的语句创建了表,但查询未按预期工作(未返回任何记录): 谁能告诉我出了什么事。提前感谢。这是完整的解决方案- 文件已存在于HDFS目录中“/user/hive/warehouse/schema.db/foo\u table/year\u month\u day\u key=201911

我有一个转储数据的目录:

"/externallocation/data/20191123/foo_table/part-00000.orc"
我需要创建一个外部表,指向上面提到的目录。
下面的语句创建了表,但查询未按预期工作(未返回任何记录):


谁能告诉我出了什么事。提前感谢。

这是完整的解决方案-

文件已存在于HDFS目录中“/user/hive/warehouse/schema.db/foo\u table/year\u month\u day\u key=20191123/000000\u 0”

现在创建表格 如果不存在schema.foo_表,则创建外部表 (a_)列字符串, b_列(int) 分区人(年\月\日\关键字字符串) 储存为兽人 地点'hdfs://nameservice1/user/hive/warehouse/schema.db/foo_table';

创建表后,需要通过下面的Alter命令添加分区 ALTER TABLE schema.foo_TABLE ADD PARTITION(年、月、日、键='20191123')

从schema.foo_表中选择*,其中年\月\日\键='20191123'


从schema.foo_表中选择*

您的文件路径错误。配置单元的正确文件路径结构如下-/warehouse\u dir/table\u name/partition\u column/orc\u file.orc。但在您的例子中,表在分区内,但分区必须在表内。您好@AbhinavSingh,谢谢您的回答。确保路径不是规范路径。但是,您是否知道是否有某种方法可以创建一个外部表,其中包含一个分区,并以某种方式推断ORC文件位于子文件夹中?或者另一个可能导致Hive“看到”这些文件的参数?或者你认为最好的方法是把这条路变成一个圣人?
> CREATE EXTERNAL TABLE IF NOT EXISTS foo_table (a_column string, b_column boolean)
PARTITIONED BY (year_month_day_key string)
STORED AS ORC LOCATION '/externallocation/data';

> SELECT * FROM foo_table WHERE year_month_day_key = '20191123';