草庐IT

分区分表

全部标签

hadoop - Hive 中分区表的用途是什么?

我知道分区表用于水平分配负载,但它们的具体用途是什么?谁能用一个简单的例子向我解释一下? 最佳答案 分区允许Hive访问您的数据子集,而无需读取所有数据。这是为什么这可能有用的具体示例。为了使这一点易于理解,我的解释非常精简,如果您想要的不仅仅是我试图提供的表面层面的理解,我建议您阅读其他地方的Hive分区。您正在以每天~1TB的速率接收带时间戳的数据。您有100天前的数据,总数据负载为~100TB。很多时候,您希望汇总过去10天的一些数据。如果不进行分区,您将不得不读入所有100TB数据,尽管其中大部分数据无论如何都会被Hive忽

hadoop - 仅基于月/年对配置单元表进行分区或分桶以优化查询

我正在构建一个包含大约40万行消息传递应用数据的表。当前表的列看起来像这样:消息标识符(整数)|发件人用户ID(整数)|other_col(字符串)|other_col2(int)|create_dt(时间戳)我将来要运行的很多查询都将依赖于涉及create_dt列的where子句。因为我预计这张表会增长,所以我想立即尝试优化它。我知道分区是一种方式,但是当我根据create_dt对其进行分区时,结果分区太多,因为我的每个日期都可以追溯到2013年11月。有没有办法改为按日期范围进行分区?每3个月分区一次怎么样?甚至每个月?如果这是可能的-我将来可能有太多分区导致效率低下吗?还有哪些其

hadoop - 无法将数据加载到配置单元中的分区表中

我无法将数据加载到分区表中,因为它显示“动态分区严格模式需要至少一个静态分区列。要关闭此功能,请设置hive.exec.dynamic.partition.mode=nonstrict“即使在设置sethive.exec.dynamite.partition.mode=nonstrict时也会出现上述错误;配置单元>设置hive.exec.dynamite.partition=true;这些参数我得到了同样的错误。请建议我更好的解决方案。提前致谢; 最佳答案 你有各种各样的错别字(还有一种很有趣的把事情搞砸的倾向):hive.exe

hadoop - 在 spark yarn 集群中,容器如何工作取决于 RDD 分区的数量?

我有一个关于ApacheSpark(yarn集群)的问题虽然在这段代码中,创建了10个分区但是在yarncluster中,只需要3个contatinervalsc=newSparkContext(newSparkConf().setAppName("SparkCount"))valsparktest=sc.textFile("/spark_test/58GB.dat",10)valtest=sparktest.flatMap(line=>line.split("")).map(word=>(word,1))在sparkyarn集群中,容器如何工作取决于RDD分区的数量?*因为我只有一点

hadoop - 自定义分区程序与 MultipleOutputFormat

我是mapreduce的新手,我想知道使用自定义分区器根据特定条件创建多个输出与Mapreduce中的MultipleOutputs概念有什么区别。 最佳答案 使用自定义分区,您会将数据发送到不同的reducer,每个reducer将写入一个文件,其中包含由它处理的所有数据。part-r-00001,part-r-00002...使用MiltipleOutputs,每个reducer都可以使用自定义名称写入不同的文件(多个输出)。Tag1-r-00001,Tag2-r-00001,Tag1-r-00002,Tag2-r-00002.

hive sql,年月日 时分秒格式的数据,以15分钟为时间段,找出每一条数据所在时间段的上下界限时间值(15分钟分区)

获取当前的年月日时分秒selectdate_format(current_timestamp(),'yyyy-MM-ddHH:mm:ss')date_format(时间字段,‘yyyy-MM-ddHH:mm:ss’)将时间字段转为2023-10-1818:14:16这种格式在指定时间上增加15分钟selectfrom_unixtime(unix_timestamp(current_timestamp(),'yyyy-MM-ddHH:mm:ss')+(15*60),'yyyy-MM-ddHH:mm:ss')unix_timestamp:获取当前时间的UNIX时间戳(从1970-01-0100:0

apache - 创建分区 View 时 Hive 出错

我有一个“日志”表,该表当前按年、月和日进行分区。我想在“日志”表的顶部创建一个分区View,但遇到了这个错误:hive>CREATEVIEWlog_viewPARTITIONEDON(pagename,year,month,day)ASSELECTpagename,year,month,day,uid,propertiesFROMlog;FAILED:SemanticException[Error10093]:RightmostcolumnsinviewoutputdonotmatchPARTITIONEDONclause创建分区View的正确方法是什么?

hadoop - 表显示 CLI 中的 Hive 分区,但无法通过终端访问

当我使用命令showpartitions时,我可以在Hive中看到日期分区。但是,当我尝试通过hadoopfs-ls/path/to/partition访问该文件夹时,我收到消息Nosuchfileordirectory。我不确定为什么会这样?即使里面没有数据,我也不能去那个日期分区文件夹吗(我也不能将数据移动到这个分区) 最佳答案 您必须遵循以下步骤:创建托管/内部表CREATETABLEstations(numberSTRING,latitudeINT,longitudeINT,elevationINT,nameSTRING,c

sql - Hive:需要指定分区列,因为目标表已分区

我想知道在Hive中是否可以将未分区的表插入到已已分区的表中。第一张表如下:hive>describeextendeduser_ratings;OKuseridintmovieidintratingintunixtimeintDetailedTableInformationTable(tableName:user_ratings,dbName:ml,owner:cloudera,createTime:1500142667,lastAccessTime:0,retention:0,sd:StorageDescriptor(cols:[FieldSchema(name:userid,typ

Hadoop 自定义分区程序问题

我遇到了一个问题,自定义中间键没有出现在我期望的分区中,这是基于自定义分区程序的“getPartition”方法的输出。我可以在我的映射器日志文件中看到分区器生成了预期的分区号,但有时具有公共(public)分区号的键不会在同一个缩减器中结束。具有共同“getPartition”输出的键如何在不同的reducer中结束?在所有“getPartition”调用之后,我在映射器日志文件中注意到对自定义中间键“hashCode”和“compareTo”方法进行了多次调用。映射器只是在分区排序中进行,还是这可能是问题的一部分?我附上了自定义中间键和分区程序的代码。注意:我确切知道1/2的键将“