草庐IT

平分分区

全部标签

amazon-web-services - 将数据从 Hive 写入 Amazon S3,同时保持表分区目录结构

假设我在Hive中有一个名为T1的表。它按日期字段dt列进行分区。在配置单元Metastore中,目录结构有一个名为T1表的文件夹,其中有子目录-每个日期一个文件夹。我的目标是将表的数据复制到AmazonS3中,同时保持目录结构。如果我尝试将表内容直接写入S3文件,如下所示,输出将写入单个文件并且目录结构丢失:INSERTOVERWRITEDIRECTORY"s3://"SELECT*FROMT1;或者,如果我尝试使用命令将目录从HIVE-metatore直接复制到s3,则整个目录将复制到S3,但底层文件不再以逗号分隔...这是一些不可读的字符相反:s3-dist-cp--src=hd

amazon-web-services - 如何将 Amazon S3 对象移动到分区目录中

以具有以下结构的s3存储桶为例,其中包含以下形式的文件francescotti_yyyy_mm_dd_hh.csv.gz:例如:francescototti_2019_05_01_00.csv.gz,francescototti_2019_05_01_01.csv.gz,francescototti_2019_05_01_02.csv.gz,.....francescototti_2019_05_01_23.csv.gz,francescototti_2019_05_02_00.csv.gz每个每小时文件大约30MB。我希望最终的配置单元表按天分区存储为orc文件。最好的方法是什么?我

hadoop - 连接 Hive 动态分区表中的所有分区

我的hive表按2年的日期分区,每个分区有200个2mb的文件。我能够连接运行以下命令"ALTERTABLEtable_namepartition(partition_column_name='2017-12-31')concatenate"手动运行每个查询需要更多时间,那么有什么简单的方法可以做到这一点吗? 最佳答案 选项1:选择并覆盖相同的配置单元表:Hive支持insertoverwritesametable,如果您确定数据插入到hive表中仅使用insertstatements(不通过h​​dfs加载文件)然后使用此选项。h

java - 如果让自定义分区程序为具有相同键的记录选择不同的分区会怎样?

在学习HadoopMapReduce时,我遇到了如何创建自定义Partitioner类。我明白我们需要在我们的类中定义抽象的getPartition方法。此方法应该返回当前键值对的分区号(整数)。现在,分区数将等于作业的reducetask数。如果在自定义分区程序中,编写一些逻辑来根据“值”而不是“键”来选择分区怎么办?根据我的理解,这可能意味着具有相同键(但不同值)的记录可能由不同的reduce任务处理,这不是MapReduce所保证的。这不是异常吗?为什么我们甚至需要getPartition(key,value,numPartitions)方法中的“value”参数?理解有误请指正

hadoop - 如何对 Hive 分区表使用 insert 语句?

我有一个配置单元表dynpart。idintnamechar(30)citychar(30)thisdaystring#PartitionInformation#col_namedata_typecommentthisdaystring按'thisday'分区,数据类型为STRING。如何将单个记录插入特定分区的表中。我知道有加载命令可以将整个文件数据加载到配置单元表中。我只想知道如何为分区表编写Insert语句。我尝试编写如下命令,但这是从另一个表中获取数据。insertintodroplaterpartition(thisday='30/03/2017')select*fromdy

hadoop - 从分区表复制 Hive

我有一个按年、月和日分区的原始表。例如:col_1col_2col_3YEARMONTHDATEabc20170325我想创建一个新表,它是该表的子集,但仍保持原始表的分区。像这样简单的东西CREATEnew_tableASSELECT*FROMoriginal_tableWHERE(conditions);但是,由于原始表太大,我必须通过分区遍历此查询。我目前的解决方案是编写一个shell脚本,遍历所有分区并为每个分区运行单独的查询。示例:foryearin'2016''2017'doformonthin'01''02'...dofordayin'01''02'...dohive-e

apache-spark - 使用 Hive 时了解 HDFS 中的文件分布和分区

一方面,在HDFS文档中他们说:HDFSisdesignedtosupportverylargefiles.ApplicationsthatarecompatiblewithHDFSarethosethatdealwithlargedatasets.Theseapplicationswritetheirdataonlyoncebuttheyreaditoneormoretimesandrequirethesereadstobesatisfiedatstreamingspeeds.HDFSsupportswrite-once-read-manysemanticsonfiles.Atypi

hadoop - 如何删除 Hive 中每个节点的分区限制?

我在Hive中有一个分区表。对于每个节点,我将分区限制设置为2000。sethive.exec.max.dynamic.partitions.pernode=2000现在到了2000年之后,我面临一个问题。所以我想了解是否有可能取消此限制?只是我不想为hive.exec.max.dynamic.partitions.pernode设置任何值,它应该处理任意数量的分区。有人可以帮我解决这个问题吗? 最佳答案 我以前遇到过这个问题。在SQL末尾添加distributebypartition_column。insertoverwritet

hadoop - HIVE 将覆盖插入分区表

我在分区表上运行了插入覆盖。命令后,例如创建以下分区。a,b,c,d,e现在,当我重新运行插入覆盖表时,但这次使用完全不同的数据集。例如,在第二次插入后,创建了以下分区。f,g,h,i,j问题-第二次插入的数据是否会覆盖属于第一次插入的数据。第二次插入后,我仍然在HDFS中看到文件夹a、b、c、d、e。但是当我通过HIVE查询它们时,分区a、b、c、d、e没有出现。这是插入覆盖表的预期行为吗?或者我在这里遗漏了什么吗? 最佳答案 这里有一些示例脚本及其效果。假设我们有一个包含三个字段的表SOME_TABLE,A、B和C,以及两个分区

hadoop - 插入到配置单元分区表中 SemanticException

首先我创建了一个Hive分区表:hive>createtablepartition_table>(sidint,snamestring,ageint)>partitionedby(sexstring)>rowformatdelimitedfieldsterminatedby',';OKTimetaken:1.232seconds表格描述如下:hive>descpartition_table;OKsidintsnamestringageintsexstring#PartitionInformation#col_namedata_typecommentsexstringTimetaken: