如何使用 Spark 处理一系列 hbase 行?

2024-03-19

我正在尝试使用 HBase 作为 Spark 的数据源。因此,第一步是从 HBase 表创建 RDD。由于 Spark 使用 hadoop 输入格式,我可以找到一种通过创建 rdd 来使用所有行的方法http://www.vidyasource.com/blog/Programming/Scala/Java/Data/Hadoop/Analytics/2014/01/25/lighting-a-spark-with-hbase http://www.vidyasource.com/blog/Programming/Scala/Java/Data/Hadoop/Analytics/2014/01/25/lighting-a-spark-with-hbase但是我们如何为范围扫描创建 RDD 呢?

欢迎所有建议。


以下是在 Spark 中使用 Scan 的示例:

import java.io.{DataOutputStream, ByteArrayOutputStream}
import java.lang.String
import org.apache.hadoop.hbase.client.Scan
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.client.Result
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.util.Base64

def convertScanToString(scan: Scan): String = {
  val out: ByteArrayOutputStream = new ByteArrayOutputStream
  val dos: DataOutputStream = new DataOutputStream(out)
  scan.write(dos)
  Base64.encodeBytes(out.toByteArray)
}

val conf = HBaseConfiguration.create()
val scan = new Scan()
scan.setCaching(500)
scan.setCacheBlocks(false)
conf.set(TableInputFormat.INPUT_TABLE, "table_name")
conf.set(TableInputFormat.SCAN, convertScanToString(scan))
val rdd = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
rdd.count

您需要将相关库添加到 Spark 类路径并确保它们与您的 Spark 兼容。温馨提示:可以使用hbase classpath找到他们。

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

如何使用 Spark 处理一系列 hbase 行? 的相关文章

随机推荐

  • 如何将 Wicket 的 DownloadLink 与动态生成的文件一起使用?

    DownloadLink https ci apache org projects wicket apidocs 1 4 x org apache wicket markup html link DownloadLink html创建用于下
  • 类与二维数组

    在 PHP 中 二维数组和类哪个更好用 我举了一个例子来说明我的意思 Using a class class someClass public name public height public weight function constr
  • struct {0} 和 memset 0 有什么区别[重复]

    这个问题在这里已经有答案了 假设我们有这样的结构 struct A int x int y 有什么区别 A a 0 and A a memset a 0 sizeof A 没有任何 最终结果是两者都将结构体成员初始化为0 C99 标准 6
  • Java 有 IndexSet 和 Range 类吗?

    在 Objective C Cocoa 中 我们有NSIndexSet类 它通过保留范围数组来有效地存储一系列唯一索引 例如 集合 1 2 30 57 将存储为范围 1 30 和 57 而不是存储为 32 个数字的数组 这有助于以简单快速的
  • 表格滚动侦听器

    我正在尝试找出滚动表的事件 我可以获取左侧参数 例如使用 scrollTable offset left 但我无法添加其变化的监听器 我想要的就是监视表格左滚动参数的变化并将其应用到另一个 DOM 元素 这不是问题 我的表格的 HTML 示
  • C++ lambda回调触发事件

    我一直在尝试了解 C 中的回调功能 我想要实现的目标如下 我有两个对象 每个对象都有自己的线程 一个物体A有一个指向第二个对象的指针B 参见示例 class A public private std unique ptr b b class
  • XmlReaderSettings CheckCharacters=false 似乎不起作用

    我正在尝试反序列化来自 Rest 服务的 xml 响应 我正在实现 IXmlSerialized 因为 xml 相当具体 并且我进行自定义序列化 响应包含非法 xml 字符 但由于我无法修改 xml 所以我必须处理它们 解决方案似乎很简单
  • 将一组布尔值转换为数字

    这是我将用来获取一组三个布尔值并将其转换为 switch 语句的 int 的代码 int bits 0 bool a true b false c true 101 5 bits bits a lt lt 2 bits bits b lt
  • python 在测试文件中的模块导入期间模拟函数调用

    我正在尝试模拟导入模块时执行的函数调用 下面是我遇到的问题的示例 app module py from util import get param PARAM get param param name class sample def ru
  • ImportError:导入 sampy.TurtleWorld 时没有名为 Tkinter 的模块

    我正在使用 Python 3 4 并按照本书进行操作 思考 Python 如何像计算机科学家一样思考 http www greenteapress com thinkpython thinkCSpy pdf 我实际上在一周前就发现了这个问题
  • 以编程方式设置网格排序

    是否可以在读取数据之前以编程方式设置 KendoUI 数据源的排序参数并避免第二个服务器读取 范围是对特定用户交互设置默认排序 如何 这是我想要做的一个例子 因为答案没有切中要害 或者也许我不明白事情是如何运作的 我定义了一个具有初始排序的
  • 根据单元格中的第一个字符隐藏 Google 电子表格中的行

    我正在努力向 Google 电子表格添加功能 电子表格从网络导入数据 并且我将其全部格式化 我的一个专栏是一系列字符串 以两种方式之一进行格式化 String 或 String 不带空格 基本上是从网络导入斜体 我正在尝试编写一个在打开电子
  • C# - 如何将单个 Excel 工作表从一个工作簿复制到另一个工作簿?

    我需要将工作表从一个工作簿复制到另一个工作簿中 但我有点卡住了 前提是我有一个 主 工作簿 其中存储了许多报告的模板 然后我需要创建特定工作表的空白副本并将其添加到新工作簿中 这是我到目前为止所拥有的 private void Create
  • 无法在 Swift 中使用缓存生成视频缩略图

    一直在努力让它发挥作用 我正在生成视频缩略图 但它在集合视图中加载非常重 我想缓存它们 但找不到解决方案 这是我正在使用的代码 func previewImageFromVideo url NSURL gt UIImage let asse
  • 将现有项目转换为可定制的框架

    我是一名 Android 开发人员 我需要创建 IOS 应用程序 所以我这样做了 应用程序现在已经准备好了 但现在我想把它变成一个库 框架 我的意思是每个客户的不同项目将使用相同的代码库 他们将能够更改应用程序的文本字符串和颜色 其余的业务
  • 使用 FakeItEasy 模拟方法内的方法

    如何模拟 伪造在另一个函数中调用的函数的结果 通常 Test2 是一个我不喜欢获取真实数据的 DataAccess 方法 我喜欢我的单元测试测试的是业务逻辑 这就是我现在所拥有的 但它根本不起作用 Sum 始终被断言为 5 public i
  • 在具有序列化问题的 Dataframe 上调用 UDF

    我在 UDF 博客上查看了一些似乎有效的示例 但实际上当我运行它们时 它们给出了臭名昭著的任务不可序列化错误 我觉得奇怪的是 这篇文章已经发表了 却没有提到这一点 运行 Spark 2 4 代码 非常简单 Spark 中一定有什么变化 de
  • 查询 MediaStore:连接缩略图和图像(在 ID 上)

    我正在为 Android 开发一个 照片库 类型的应用程序 它最初是作为 Udacity 开发 Android 应用程序的最终项目 因此它的整体结构 活动 内容提供者等 应该非常健全 并且已被 Udacity Google 接受认证 然而
  • Android中如何混淆字符串?

    我想混淆我的 api url 我可以使用 Proguard 吗 如果是 我该怎么做 以及如何在 Proguard 配置文件中添加类来混淆类中存在的方法和变量 您现在可以使用新的 gradle 插件 库来有效地混淆类中的字符串 请在此处查看
  • 如何使用 Spark 处理一系列 hbase 行?

    我正在尝试使用 HBase 作为 Spark 的数据源 因此 第一步是从 HBase 表创建 RDD 由于 Spark 使用 hadoop 输入格式 我可以找到一种通过创建 rdd 来使用所有行的方法http www vidyasource