【问题标题】:how to set spark RDD StorageLevel in hive on spark?如何在火花上的蜂巢中设置火花 RDD StorageLevel?
【发布时间】:2016-01-17 11:04:36
【问题描述】:

在我的火花工作蜂巢中,我收到此错误:

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 ?

谢谢你的帮助~~~~

【问题讨论】:

    标签: hadoop apache-spark hive hiveql


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 谢谢你的回答,但是sparksql和hiveonspark一样吗?我想知道 HIVE ON SPARK 中的火花作业,当数据内存不足时,该数据可以写入磁盘吗?如果可以,它是默认的还是我必须设置一些东西?
    • 我相信它们都是相同的,因为它们都使用相同的运行时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2018-08-10
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多