df=spark.read.orc("/apps/hive/warehouse/emp.db/partition_load_table").where('country="NCL"' && 'county="RUS"')
/apps/hive/warehouse/emp.db/partition_load_table/country=ncl
df=spark.read.orc("/apps/hive/warehouse/emp.db/partition_load_table").where('country="NCL"')
不确定为什么不直接使用HQLContext查询配置单元表:
spark.sql(“select*from partition_load_table where country in('ncl','rus')”)
如果由于某些原因不可用,则可以合并基础配置单元分区。首先,将它们作为单独的数据页和UNION读入。类似于:
1-创建了源表 2-将数据从本地加载到源表 3-创建了另一个带有分区的表-partition_table 我不确定如何在外部表中进行分区。有人能帮我一步一步地描述一下吗?。
在创建配置单元表时,如果使用分区或关键字群集,配置单元将创建对应于每个分区或桶的单独文件。但是对于外部表,这仍然有效。根据我的理解,与外部文件相对应的数据文件不是由hive管理的。同样,hive也会创建对应于每个分区或bucket的附加文件,并将相应的数据移到这些文件中。 编辑-添加详细信息。 摘自“Hadoop:权威指南”-“第17章:配置单元” 当我们将数据加载到分区表中时,分区值是显式指定的
当使用外部配置单元表时,是否有一种方法可以删除目录中的数据,但通过查询保留分区。请注意,我不想删除表并重新创建它。我只想清空底层文件夹并重新启动一个进程。我的表很大,按年、月、日期和小时划分分区,手动重新创建分区需要大量时间。 谢谢
我有一个配置单元表,其中一个date列上存在分区,但date列以YYYYMMDD格式存储为INT。该表还可以包含未来日期分区的数据。 现在,作为过程的一部分,我希望删除那些在处理日(位于处理日)上运行的分区。 当我编写drop分区时,比如,那么它工作正常。 考虑到我的输入将是唯一的日期格式YYYY-MM-DD和我已经删除所有分区已给出输入日期-1;如何使上述陈述奏效?