当前位置: 首页 > 知识库问答 >
问题:

配置单元外部表无法读取已分区的hdfs目录

西门奇希
2023-03-14

我有一个map reduce作业,它已经使用配置单元分区命名约定将记录写入hdfs。

/user/test/generated/code=1/channel=A
/user/test/generated/code=1/channel=B
 create external table test_1 ( id string, name string ) partitioned by
 (code string, channel string) STORED AS PARQUET LOCATION
 '/user/test/generated'

有没有一种方法可以让hive自动识别分区(不需要执行插入查询)?

共有1个答案

戈嘉慕
2023-03-14

使用msck,它似乎是工作的。但我不得不退出蜂巢会话,重新连接。

MSCK REPAIR TABLE test_1
 类似资料:
  • 我有一个外部分区配置单元表,下面的文件行格式分隔字段以“通过配置单元直接读取数据就可以了,但是当使用Spark的Dataframe API时,分隔符”没有被考虑在内。 创建外部分区表: dataframe.show()输出:

  • 我正在使用Spark生成拼花文件(通过分区,使用Snappy压缩),并将它们存储在HDFS位置。 拼花数据文件存储在下 然后为其创建配置单元表,如下所示:

  • 当使用外部配置单元表时,是否有一种方法可以删除目录中的数据,但通过查询保留分区。请注意,我不想删除表并重新创建它。我只想清空底层文件夹并重新启动一个进程。我的表很大,按年、月、日期和小时划分分区,手动重新创建分区需要大量时间。 谢谢

  • 当然,希望有人能帮助我创建外部配置单元分区表,方法是根据HDFS目录中的逗号分隔文件自动添加数据。我的理解(或缺乏理解)是,当您定义一个已分区的CREATE外部表并为其提供一个位置时,它应该递归地扫描/读取每个子目录,并将数据加载到新创建的已分区的外部表中。下面的内容应该会对我的烦恼提供一些更多的了解… 每个'dt='子目录都包含分隔的文件。

  • 我试过这个 如果存在分区(process_date='__hive_default_partition__'),则更改表Table_Name DROP; 我正在犯错误

  • 1-创建了源表 2-将数据从本地加载到源表 3-创建了另一个带有分区的表-partition_table 我不确定如何在外部表中进行分区。有人能帮我一步一步地描述一下吗?。