hadoop - 如何在 spark 上的 hive 中设置 spark RDD StorageLevel?

标签 hadoop apache-spark hive hiveql

在我的 hive on spark 作业中,出现此错误:

org.apache.spark.shuffle.MetadataFetchFailedException:缺少 shuffle 0 的输出位置

感谢您的回答 (Why do Spark jobs fail with org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle 0 in speculation mode?),我知道这可能是我的 hiveonspark 作业有同样的问题

由于 hive 将 sql 转换为 hiveonspark 作业,我不知道如何在 hive 中设置它以使其 hiveonspark 作业从 StorageLevel.MEMORY_ONLY 更改为 StorageLevel.MEMORY_AND_DISK?

谢谢你的帮助~~~~

最佳答案

您可以使用 CACHE/UNCACHE [LAZY] Table <table_name>管理缓存。 More details .

如果您使用的是 DataFrame,那么您可以使用 persist(...) 来指定 StorageLevel。看API here. .

除了设置存储级别外,您还可以优化其他内容。 SparkSQL 使用一种称为列存储的不同缓存机制,这是一种更有效的缓存数据方式(因为 SparkSQL 是模式感知的)。如 detail here (THis is latest version documentation. Refer to the documentation of version you are using). 中所述,可以调整不同的配置属性集来管理缓存。

  • spark.sql.inMemoryColumnarStorage.compressed
  • spark.sql.inMemoryColumnarStorage.batchSize

关于hadoop - 如何在 spark 上的 hive 中设置 spark RDD StorageLevel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34823218/

相关文章:

hadoop - 用于在给定分隔符后提取文本的 impala 字符串函数

scala - 如何使用 Spark 独立集群在工作节点上管理多个执行程序?

斯卡拉 Spark : how to use dataset for a case class with the schema has snake_case?

scala - 如何对spark Dataframe进行合并操作?

hive - 选择满足配置单元中条件的上一行

hadoop - Pig/Hive中如何根据关键子集进行聚合?

Hadoop 'put' 命令 : No such file or directory

hadoop - Hive-使用动态分区查询时出错

java - 无法在java spark中读取文件

sql - 获取Hive中每个单词的唯一字数