如何使用 hive 上下文有效地查询 Spark 中的 hive 表?

2023-12-02

我有一个 1.6T Hive 表,其中包含时间序列数据。我在用Hive 1.2.1 and Spark 1.6.1 in scala.

以下是我的代码中的查询。但我总是得到Java out of memory error.

val sid_data_df = hiveContext.sql(s"SELECT time, total_field, sid, year, date FROM tablename WHERE sid = '$stationId' ORDER BY time LIMIT 4320000  ")

通过从配置单元表中迭代地一次选择几条记录,我试图对结果进行滑动窗口dataframe

我有一个由 4 个节点组成的集群,具有 122 GB 内存、44 个 vCore。我正在使用 488 GB 可用内存中的 425 GB。我使用以下参数进行火花提交

--num-executors 16 --driver-memory 4g --executor-memory 22G --executor-cores 10 \
--conf "spark.sql.shuffle.partitions=1800" \
--conf "spark.shuffle.memory.fraction=0.6" \
--conf "spark.storage.memoryFraction=0.4" \
--conf "spark.yarn.executor.memoryOverhead=2600" \
--conf "spark.yarn.nodemanager.resource.memory-mb=123880" \
--conf "spark.yarn.nodemanager.resource.cpu-vcores=43"

请给我关于如何优化它并成功从配置单元表中获取数据的建议。

Thanks


问题很可能出在这里:

LIMIT 4320000

你应该避免使用LIMIT对大量记录进行子集化。在火花中,LIMIT将所有行移动到单个分区,可能会导致严重的性能和稳定性问题。

参见示例如何优化下面的 Spark 代码(scala)?

我试图通过一次选择几条记录来迭代地在这个结果数据帧上创建一个滑动窗口。

这听起来不对。滑动窗口操作通常可以通过窗口函数和基于时间戳的某种组合来实现window buckets.

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

如何使用 hive 上下文有效地查询 Spark 中的 hive 表? 的相关文章

随机推荐

  • 嵌套 INotifyPropertyChanged 类不起作用

    得到了一些代码 得到了意想不到的结果 如果我用 Myclass 替换嵌套类 那就没有问题了 我想念什么 我是否绑定文本 到其他控件 或绑定图像并不重要 xaml代码
  • Android:是否可以在屏幕上同时创建底部和顶部选项卡?

    我想知道是否可以在顶部和底部设置不同的选项卡 单击时会导致不同的活动 谷歌搜索但没有找到任何相关内容 Thanks Android 的好处是几乎所有你想做的事情都可以实现 如果我们要更改您的 XML 我们会将其更改为以下内容
  • 用于淡入和淡出视图的 Angular 4 动画

    我只是希望视图在路线更改时淡入和淡出 我似乎已经正确设置了组件 但我认为需要使动画语法正确 这是我目前的动画尝试 我将此动画导入到我的组件中 import trigger state animate style transition fro
  • 使用 PHP API 进行 FB.login

    我已经设置了一个 Canvas 页面 单击表单提交按钮即可实现 FB login 在以下请求期间 它尝试通过 facebook gt api me 来自 Github 的最新 API 版本 访问用户数据 它可以在 Firefox 和 Chr
  • 检测序列参数的正确方法?

    我想编写一个接受参数的函数 该参数可以是序列或单个值 value的类型有str int等 但是我don t希望将其限制为硬编码列表 换句话说 我想知道参数 X 是一个序列还是我必须转换为序列以避免以后出现特殊情况的东西 我可以 type X
  • 错误:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“int”[-Wformat=]

    我目前正在尝试做自己的 shell 它必须是多语言的 所以我尝试实现一个读取 txt 文件中的行的函数 include
  • 如何在反应材料表上添加精美的滚动条?

    我在用着反应材料表并想要一个像样的滚动条而不是默认的分页 我努力了反应自定义滚动但它没有按照我的意图工作 我的应用程序的默认滚动条已激活 还有一件事 我怎样才能将这种类型的滚动应用到桌体上 import CustomScroll from
  • Fragment 和 Anko toast 的“接收器类型不匹配”

    我正在尝试使用 Jetbrains 的 Anko 库在我的应用程序中轻松显示 Android toast 消息 这是相关的代码片段 val message CharSequence Recycled holder taskEditText
  • 从 IntentService 向 Activity 发送消息

    我在同一个应用程序中有一个活动和一个intentService 该服务必须在活动结束后继续运行 因此我不想绑定 我已经在谷歌上搜索了几个小时 但找不到一个关于如何做到这一点的好例子 我可以启动该服务并向其传递额外内容 但现在该服务必须使用
  • iPad 上的 iAd:横向 iAd 方向不正确

    这仍然是一个相对较新的主题 因此不确定有多少人必须在 iPad iOS4 2 1 上实现 iAd 但基本上 我让 iAd 横幅以横向模式显示 并且显示正确 唯一的问题是 当我单击 测试广告 时 它会以纵向模式显示测试广告 即 设备仍处于横向
  • 有没有办法使用 Video.js 从视频标签获取当前字幕的文本?

    我想在播放视频期间获取当前字幕的文本 并且实现自己的字幕块 即隐藏原始字幕 并以几种不同的方式使用该信息 目前我使用videojs为我的球员 有什么方法可以从中获取当前标题的字符串吗 此代码获取当前提示并放入 span element fu
  • R curl::has_internet() FALSE 即使有互联网连接

    使用 R 包 Eurostat 从 EuroSTAT 下载数据时出现了问题 Population data by NUTS3 pop data lt subset eurostat get eurostat demo r pjangrp3
  • 为什么Android C2DM推送消息总是不到达?

    我已经构建了一个功能正常的 C2DM 应用程序 通常它运行得很好 并且推送消息到达得很快 然而 我发现当我第一次启动应用程序或将其重新聚焦时 消息经常不会到达 它们肯定发送成功 我收到 200 响应 并且消息格式肯定是正确的 稍后发送相同的
  • C 中的 size_t 是什么?

    我很困惑size t在 C 中 我知道它是由sizeof操作员 但它到底是什么 它是一种数据类型吗 假设我有一个for loop for i 0 i lt some size i 我应该使用int i or size t i 来自维基百科
  • 如何让自动对焦在第二个 AVCaptureSession 中工作而不重新创建会话?

    当我创建第二个 AVCaptureSession 时 自动对焦不适用于第一个 AVCaptureSession 要创建的第二个会话是自动对焦工作的会话 而第一个创建的会话则不自动对焦 我希望任一会话在另一个会话停止后启动时都能够自动对焦 就
  • 如何比较两个捕获的声音,看看哪一个声音更大?

    给定从麦克风捕获的两个字节数组的数据 我如何确定哪一个有更多的噪声尖峰 我假设有一种算法可以应用于数据 但我不知道从哪里开始 说实话 我需要能够确定婴儿何时哭泣以及房间内的环境噪音 如果有帮助 我正在使用 Microsoft Xna Fra
  • 无法实例化子目录中定义的类

    我的 简化的 项目布局如下 init py test py lib init py lib client py my test py简单来说就是 import lib client A client A Test and my lib cl
  • UIWindow 的根视图控制器在应用程序启动时不会旋转到横向

    我正在开发一个基于 xib 的仅横向应用程序 该应用程序可以在横向模式下正确启动 然而 我的主 ViewController 中的视图是纵向呈现的 也就是说 它旋转 90 度 使图像看起来被裁剪并且不会占据整个屏幕 如果我使用我的界面来呈现
  • grails 线程 -> hibernateException:没有 Hibernate 会话绑定到线程

    我试图在服务中创建一些线程 但我得到了 hibernateException no session 我已经在 stackoverflow 中看到过关于此问题的讨论 其中包含抛出 RuntimeException 的解决方案 就我而言是行不通
  • 如何使用 hive 上下文有效地查询 Spark 中的 hive 表?

    我有一个 1 6T Hive 表 其中包含时间序列数据 我在用Hive 1 2 1 and Spark 1 6 1 in scala 以下是我的代码中的查询 但我总是得到Java out of memory error val sid da