Hive“添加分区”并发

2024-05-14

我们有一个外部 Hive 表,用于处理原始日志文件数据。这些文件每小时一次,并按日期和源主机名分区。

目前,我们正在使用简单的 python 脚本导入文件,这些脚本每小时触发几次。该脚本根据需要在 HDFS 上创建子文件夹,从临时本地存储复制新文件并将任何新分区添加到 Hive。

今天,使用“ALTER TABLE ... ADD PARTITION ...”创建新分区。但是,如果另一个 Hive 查询正在表上运行,它将被锁定,这意味着添加分区命令将失败(如果查询运行足够长的时间),因为它需要独占锁。

此方法的替代方法是使用“MSCK REPAIR TABLE”,由于某种原因,它不会not似乎获取了表上的任何锁。然而,我的印象是,不建议在生产环境中使用修复表。

  • 在并发环境中以编程方式添加 Hive 分区的最佳实践是什么?
  • 使用 MSCK REPAIR TABLE 有哪些风险或缺点?
  • 对于两个分区添加命令看似不一致的锁定行为是否有解释? IE。它们对运行查询有不同的影响吗?

这不是一个好的答案,但我们有同样的问题,以下是我们的发现:

  • 在 Hive 文档中,https://cwiki.apache.org/confluence/display/Hive/Locking https://cwiki.apache.org/confluence/display/Hive/Locking,锁似乎非常明智:“ADD 分区”将请求对创建的分区的独占锁,以及对整个表的共享锁。SELECT 查询将请求对表的共享锁。所以它should be fine
  • 然而,至少在 CDH 5.3 中,它不是这样工作的。根据这个线程,https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/u7aM9W3pegM https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/u7aM9W3pegM这是一个已知的行为,可能是新的(我不确定,但我也认为,作为该线程的作者,CDH 4.7 上不存在该问题)

所以基本上,我们仍在考虑我们的分区策略,但我们可能会尝试提前创建所有可能的分区(在获取数据之前),因为我们确切地知道所有未来分区的值(可能不是您的情况) )。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive“添加分区”并发 的相关文章

  • Hive“添加分区”并发

    我们有一个外部 Hive 表 用于处理原始日志文件数据 这些文件每小时一次 并按日期和源主机名分区 目前 我们正在使用简单的 python 脚本导入文件 这些脚本每小时触发几次 该脚本根据需要在 HDFS 上创建子文件夹 从临时本地存储复制
  • 伪分布式模式下的 Hadoop。连接被拒绝

    P S 请不要将此标记为重复 Hi 我一直在尝试以伪分布式模式设置和运行 Hadoop 当我运行 start all sh 脚本时 我得到以下输出 starting namenode logging to home raveesh Hado
  • 使用 Hiveql 循环

    我正在尝试合并 2 个数据集 例如 A 和 B 数据集 A 有一个变量 Flag 它有 2 个值 我并没有只是将两个数据合并在一起 而是尝试根据 标志 变量合并两个数据集 合并代码如下 create table new data as se
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 适用于 Hadoop 的 DynamoDB 输入格式

    我必须使用 Hadoop mapreduce 处理保留在 Amazon Dynamodb 中的一些数据 我在互联网上搜索 Dynamo DB 的 Hadoop InputFormat 但找不到它 我对 Dynamo DB 不熟悉 所以我猜测
  • 如何创建 HIVE 表来读取分号分隔值

    我想创建一个 HIVE 表 该表将以分号分隔的值读取 但我的代码不断给出错误 有没有人有什么建议 CREATE TABLE test details Time STRING Vital STRING sID STRING PARTITION
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以
  • Windows 上的 Apache Pig 在运行“pig -x local”时出现“hadoop-config.cmd”未被识别为内部或外部命令”错误

    如果您由于以下错误而无法在 Windows 上运行 Apache Pig hadoop 2 4 0 bin hadoop config cmd is not recognized as an internal or external com
  • 在 Windows 7 64 位中删除 Spark 临时目录时出现异常

    我正在尝试在 Windows 7 64 位中运行 Spark 作业的单元测试 我有 HADOOP HOME D winutils winutils path D winutils bin winutils exe 我运行了以下命令 winu
  • Pig 10.0 - 将元组分组并在 foreach 中合并包

    我在用着Pig 10 0 我想在 foreach 中合并包 假设我有以下内容visitors alias a b 1 2 3 4 a d 1 3 6 a e 7 z b 1 2 3 我想对第一个字段上的元组进行分组 并将包与一组语义合并以获
  • Hadoop 推测任务执行

    在Google的MapReduce论文中 他们有一个备份任务 我认为这与Hadoop中的推测任务是一样的 推测任务是如何实现的 当我启动一项推测任务时 该任务是从一开始就作为较旧且缓慢的任务开始 还是从较旧的任务到达的位置开始 如果是这样
  • 名称节点处于安全模式

    我提到了这些问题名称节点处于安全模式 无法离开 https stackoverflow com questions 15803266 name node is in safe mode not able to leave and SafeM
  • Spark 写入 hdfs 无法使用 saveAsNewAPIHadoopFile 方法

    我在 CDH 5 2 0 上使用 Spark 1 1 0 并试图确保我可以读取和写入 hdfs 我很快意识到 textFile 和 saveAsTextFile 调用旧的 api 并且似乎与我们的 hdfs 版本不兼容 def testHD
  • Talend 和 Apache Spark?

    我对 Talend 和 Apache Spark 在大数据生态系统中的定位感到困惑 因为 Apache Spark 和 Talend 都可以用于 ETL 有人可以用一个例子解释一下吗 Talend 是一种基于工具的大数据方法 通过内置组件支
  • hive 添加分区语句忽略前导零

    我在 hdfs 上有文件夹 user test year 2016 month 04 dt 25 000000 0 需要将上面的分区路径添加到test table 命令 ALTER TABLE test ADD IF NOT EXISTS
  • 如何将 Pandas 数据框保存到配置单元表?

    我有 pandas 数据框 我正在尝试找到将数据框数据保存到配置单元表的最佳方法 一种方法是保存到 csv 文件并将其加载到 hive 表 有一个更好的方法吗 None
  • java.io.IOException: EnsureRemaining: 仅剩余 0 个字节,尝试读取 1

    我在 giraph 中的自定义类方面遇到一些问题 我制作了 VertexInput 和 Output 格式 但总是收到以下错误 java io IOException ensureRemaining Only bytes remaining
  • 在 Hadoop MapReduce 中为二进制文件创建自定义 InputFormat 和 RecordReader

    我正在编写一个 M R 作业 该作业处理以二进制格式编写的大型时间序列数据文件 如下所示 此处换行以提高可读性 显然 实际数据是连续的 TIMESTAMP 1 TIMESTAMP 1 TIMESTAMP 2 TIMESTAMP 2 TIME
  • 当我将文件存储在 HDFS 中时,它们会被复制吗?

    我是 Hadoop 新手 当我使用以下方式存储 Excel 文件时hadoop fs putcommoad 它存储在HDFS中 复制因子为3 我的问题是 是否需要3份并分别存储到3个节点中 这是 HDFS 工作的漫画 https docs
  • 更改 Hadoop 中的数据节点数量

    如何改变数据节点的数量 即禁用和启用某些数据节点来测试可扩展性 说得更清楚一点 我有4个数据节点 我想一一实验1 2 3 4个数据节点的性能 是否可以只更新名称节点中的从属文件 临时停用节点的正确方法 创建一个 排除文件 这列出了您想要删除

随机推荐