草庐IT

分区Partition

全部标签

hadoop - 使用路径中没有列名的分区创建 Hive 外部表?

我需要为一个只读的现有文件夹结构创建一个外部表。原来的hive表有年月日等分区。他们的文件以这种方式存储在路径HDFS_PATH/2016/10/04/但是当我在hive中创建一个外部表时,它总是存储到像HDFS_PATH/year=2016/month=10/day=04/这样的路径尽管我可以像在这个链接中那样更改1个分区位置HowtoUpdate/DropaHivePartition?,但我必须为每个分区组合设置位置。有没有更简单的方法一劳永逸地设置? 最佳答案 认为最好回答你的问题,因为其他答案没有解释。使用动态分区(不列出每

hadoop - Spark : Minimize task/partition size skew with textFile's minPartitions option?

我正在通过sc.textFile("/data/*/*/*")之类的方式将数万个文件读入rdd>一个问题是这些文件中的大多数都是微小的,而其他的则巨大。这会导致任务不平衡,从而导致各种众所周知的问题。我能否通过sc.textFile("/data/*/*/*",minPartitions=n_files*5)读取数据来拆分最大的分区,其中n_files是输入文件的个数吗?如约定elsewhere在stackoverflow上,minPartitions被传递到hadooprabithole,并在org.apache.hadoop.mapred.TextInputFormat.getSp

hadoop - 无法联系配置单元表分区,删除与分区相关的 hdfs 文件后

我的Hadoop集群在11:00对每个数据进行批处理。作业创建hive表分区(ex.p_date=201702,p_domain=0)并像ETL一样将rdbms数据导入到hive表分区....(hive表不是外部表)但是作业失败了,我删除了一些hdfs文件(分区位置=>p_date=20170228,p_domain=0)重新处理。这是我的错误,我只是在直线上键入查询删除分区...当我以这种方式查询“select*fromtable_namewherep_date=20170228,p_domain=0”时遇到挂起,但是“select*fromtable_namewherep_date

hadoop - 如果我们已经有一些数据,则更新分区的配置单元表

我有一个按天分区的配置单元表,与03-02-2017相关的数据已加载到其中,但第二天我有与03-03-2017相关的数据。现在如何用我的新数据更新Hive表,以便我的Hive仓库目录应该如下所示hive/warehouse/sample_database/sample_table/day=03-02-2017/data_part_0000hive/warehouse/sample_database/sample_table/day=03-03-2017/data_part_0000所以请提供创建表的代码以及添加新数据集时如何更新表。 最佳答案

hadoop - Spark 分区修剪在 1.6.0 上不起作用

我在hdfs上创建了分区的parquet文件并创建了HIVE外部表。当我在分区列上使用过滤器查询表时,spark检查所有分区文件而不是特定分区。我们使用的是spark1.6.0。数据框:df=hivecontext.createDataFrame([("class1","Economics","name1",None),("class2","Economics","name2",92),("class2","CS","name2",92),("class1","CS","name1",92)],["class","subject","name","marks"])创建Parquet分区

hadoop - 为什么预分区会因为减少洗牌而有利于 Spark 工作?

很多教程都提到RDD的pre-partition会优化sparkjobs的datashuffling。令我困惑的是,据我了解,预分区也会导致洗牌,为什么在这里提前洗牌会有利于某些操作?特别是sparkitself会针对一组转换做优化。例如:如果我想加入两个数据集国家(id,国家)和收入(id,(收入,月,年)),这两种操作有什么区别?(我使用PySpark架构)按id预分区country=country.partitionBy(10).persist()income=income.partitionBy(10).persist()income.join(country)不预分区直接加入

hadoop - 在 Hadoop 中获取输入文件的分区 ID

我需要知道我正在使用的输入文件分区的行索引。我可以通过将行索引连接到数据来在原始文件中强制执行此操作,但我宁愿在Hadoop中有一种方法来执行此操作。我的映射器中有这个...Stringid=context.getConfiguration().get("mapreduce.task.partition");但是“id”在任何情况下都是0。在“Hadoop:TheDefinitiveGuide”中,它提到访问分区ID等属性“可以从传递给Mapper或Reducer的所有方法的上下文对象中访问”。据我所知,它实际上并没有涉及如何访问这些信息。我浏览了Context对象的文档,似乎上面是执

hadoop - 基于子查询在配置单元表中添加分区

我正在尝试将分区添加到配置单元表(按日期分区)我的问题是需要从另一个表中获取日期。我的查询看起来像:ALTERTABLEmy_tableADDIFNOTEXISTSPARTITION(server_date=(SELECTmax(server_date)FROMprocessed_table));当我运行查询配置单元时抛出以下错误:错误:编译语句时出错:FAILED:ParseException行1:84无法识别常量(state=42000,code=40000)中'(''SELECT''max'附近的输入 最佳答案 Hive不允许

hadoop - Hive动态分区问题

我有如下2个表。CREATEEXTERNALTABLEIFNOTEXISTSTEMP_tab(idint,mytimeSTRING,ageint)ROWFORMATDELIMITEDFIELDSTERMINATEDBY','STOREDASTEXTFILELOCATION'hdfs://xxx';CREATETABLEIFNOTEXISTSmain_TAB(idint,ageint)PARTITIONEDBY(mytimeSTRING)STOREDASORCtblproperties("orc.compress"="ZLIB");FROMTEMP_TABINSERTOVERWRITET

mysql - Sqoop 将数据从 MySQL 表复制到分区的 Hive 表

我写了一个Sqoop脚本:HADOOP_USER_NAME=hdfssqoopimport--connectjdbc:mysql://cmsmaster.cy9mnipcdof2.us-east-1.rds.amazonaws.com/db--usernameuser-password-file/user/password/dbpass.txt--fields-terminated-by','--target-dir/user/db/sqoop_internal--delete-target-dir--hive-import--hive-overwrite--hive-tablesqo