草庐IT

搞机分区

全部标签

java - 不为创建的新配置单元表创建分区文件

表创建成功,但分区未创建/分区文件未创建。CREATEEXTERNALTABLEtable_name(col1,col2)PARTITIONEDBY(`biz_dt`date)--partitioncreatedROWFORMATSERDE'org.apache.hadoop.hive.serde2.OpenCSVSerde'WITHSERDEPROPERTIES('quoteChar'='\"','separatorChar'=',')STOREDASINPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat'OUTPUTFORMAT'o

hadoop - 自定义分区程序 : N number of keys to N different files

我的要求是编写自定义分区程序。例如,我有N个来自映射器的键('jsa'、'msa'、'jbac')。长度不固定。事实上,它可以是任何词。我的要求是以这样一种方式编写自定义分区程序,它将所有相同的key数据收集到同一个文件中。键数不固定。在此先感谢您。谢谢,萨提斯。 最佳答案 因此,您有多个映射器正在输出的键,并且您希望每个键都有不同的缩减器,并且每个键都有一个单独的文件。因此,首先编写Partitioner可能是实现该目标的一种方式。默认情况下,hadoop有自己的内部逻辑,它在键上执行,并根据它调用reducer。因此,如果您想编

hadoop - 从现有的外部分区表创建新的配置单元表

我有一个包含近500个分区的外部分区表。我正在尝试创建另一个具有与旧表相同属性的外部表。然后我想将所有分区从我的旧表复制到新创建的表。下面是我的创建表查询。我的旧表存储为TEXTFILE,我想将新表保存为ORC文件。'addjarjson_jarfile;CREATEEXTERNALTABLEnew_table_orc(col1,col2,col3...col27)PARTITIONEDBY(yearstring,monthstring,daystring)ROWFORMATSERDE'org.openx.data.jsonserde.JsonSerDe'WITHSERDEPROPER

database - 将数据加载到 impala 分区表中

我在HDFS中有以下目录结构中的数据:/exported/2014/07/01/00/SEARCHES/part-m-00000.bz2part-m-00001.bz2/exported/2014/07/01/02/SEARCHES/part-m-00000.bz2part-m-00001.bz2part-m-00003.bz2..../exported/2014/08/01/09/SEARCHES/part-m-00005.bz2每个子目录下有多个零件文件。我想将此数据集加载到impala表中,因此使用以下查询来创建表:CREATEEXTERNALTABLEsearch(time_s

hadoop - Hive - 面临动态分区错误的挑战

任何人都可以指导我在进行动态分区时哪里出错了。--暂存表:createtablestaging_peopledata(firstnamestring,secondnamestring,salaryfloat,countrystringstatestring)rowformatdelimitedfieldsterminatedby','linesterminatedby'\n';--暂存表的数据:John,David,30000,RUS,tnRUSJohn,David,30000,RUS,tnRUSMary,David,5000,AUS,syAUSMary,David,5000,AUS,

hadoop - 在 Hadoop 中编写自定义分区程序的语法

我了解自定义分区程序背后的想法。就我而言,我想将所有相同的单词发送到一个onereducer。我知道我可以使用哈希码来做到这一点。但是,我不确定HadoopAPI中分区程序的语法。这是签名:ClassPartitioner如何选择Key、Value类型?另外为什么我需要这里的值(value)?我不应该只使用key并根据某种逻辑返回一个整数(在我的例子中是哈希码)。谁能举个例子解释一下? 最佳答案 默认分区器(HashPartitioner)的语法如下publicclassHashPartitionerextendsPartition

sql - Hive分区与多表,有什么区别?

我有一个好奇心。我想知道hive分区和多表的区别。我知道分区的目的是为了减少查询对象。我认为这在分区和多个表之间是相同的。有什么区别? 最佳答案 分区和“并行”表非常相似。事实上,SQLServer有一个使用"partitionedviews"的分区实现。,它将多个表组合成一个View。分区表和多个表合并成一个表之间的区别既微妙又明显,但归结为:表是表是表。这有什么影响?首先,用户不需要知道分区就可以使用表。对于存储在多个表中的数据,用户需要知道表名,因为SQL需要FROM子句中的名称。其次,数据库引擎知道分区,但不一定知道多个表是

hadoop - 如何在没有分区的情况下将数据附加到现有的配置单元表

我创建了包含过去10年历史股票数据的配置单元表。从现在开始,我必须每天附加数据。我想过根据日期创建分区,但它导致许多分区大约3000加上每个新日期一个新分区,我认为这是不可行的。任何人都可以建议一种最佳方法来将所有历史数据存储在表中并在新数据出现时附加新数据。 最佳答案 对于每个分区表,如何对表进行分区的决定主要取决于您将如何查询表。另一个考虑因素是每个分区要有多少数据,因为分区不应该太小。每一个都应该至少与一个HDFSblock一样大,否则它会占用太多目录。这就是说,我认为3000个分区不是问题。在之前的工作中,我们有一个巨大的表

mysql - 按 unix 时间戳的 Hive 动态分区

我正在Hive中创建一个表,运行一个映射器转换,然后保存一个表。我想根据运行Hive查询的时间对表进行分区。我创建表:CREATEEXTERNALTABLEIFNOTEXISTStesttable(test_testSTRING)PARTITIONEDBY(timeSTRING)LOCATION'loc/table';然后在尝试此操作时运行转换并保存表:FROM(MAPone.test_testUSING'pythonjob.py'AStest1FROMone)test_stepINSERTOVERWRITETABLEtesttablePARTITION(time=unix_times

java - 在自定义键的情况下,如何为自定义分区程序设置 numReduceTask

HashPartitionerhash=newHashPartitioner();@OverridepublicintgetPartition(CompositeKeyClasskeyClass,TextvalClass,intnumOfPartition){//TODOAuto-generatedmethodstubtry{String[]type=valClass.toString().split(",");if(type[0].equals("Mapper1")){return(hash.getPartition(keyClass.getFirst(),valClass,numO