惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园_首页
GbyAI
GbyAI
罗磊的独立博客
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
U
Unit 42
V
Visual Studio Blog
F
Fortinet All Blogs
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Engineering at Meta
Engineering at Meta
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
T
Tor Project blog
Martin Fowler
Martin Fowler
K
Kaspersky official blog
Scott Helme
Scott Helme
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
D
DataBreaches.Net
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
博客园 - 【当耐特】
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
美团技术团队
S
Secure Thoughts
C
Cisco Blogs
M
MIT News - Artificial intelligence
L
Lohrmann on Cybersecurity
T
Tenable Blog
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Check Point Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Spread Privacy
Spread Privacy
S
Security @ Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
A
Arctic Wolf
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
T
Threat Research - Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
O
OpenAI News
V
Vulnerabilities – Threatpost

Hadoop

请教一下 Hadoop 在生产环境可以通过 Docker 安装吗? - V2EX hadoop zookeeper - V2EX 菜鸡初学者对 Hadoop 云端架构的一些疑惑 - V2EX 请问 hadoop 多块磁盘只部署一个 datanode 好还是每块磁盘各部署一个 datanode - V2EX 求助: Hadoop 中使用 Hbase 异常 - V2EX 有个选修课作业需要写一个关于 hadoop 技术的论文综述,有哪些比较重要的方面可以写 - V2EX 大佬们, 请问自学 hadoop 系列, 有什么教程或者资料吗? - V2EX 突然接到甲方的一个需求,要求从 hadoop 集群回到单机.... - V2EX 有什么部署 Hadoop 的主流方法么 - V2EX 爬虫每天传一次到 hdfs 能用 flume 吗? - V2EX 关于 Hadoop3 的 HADOOP_MAPRED_HOME - V2EX 请教一下存储的问题 - V2EX PayPal 上海招大数据研发工程师啦! - V2EX 大文件通过 Mapreduce 切分存入 hbase - V2EX Hadoop 读取 10 万个文件初始化过程很慢有方便的解决办法么? - V2EX 公司要做个数仓,单机 hadoop 是否没什么意义,但是又想自己动手做一下。求给建议! - V2EX 求助: hadoop 的 wordcount 一直是挂起状态 ACCEPTED: waiting for AM container to be allocated, launched and register with RM. - V2EX 大数据环境中压缩格式用什么比较好? - V2EX 有什么好的办法可以用 Flink/Spark 高效率并行处理大量大小不一的压缩数据 - V2EX 请教从外部访问用 docker 搭建的 hadoop 集群的问题? - V2EX 请教: hadoop 不会将大表格分割为 block - V2EX 关于分布式系统的学习 - V2EX springboot 整合 spark, 集群方式启动需要怎么配置呢? - V2EX 关于 zookeeper 集群 leader 节点的选举问题? - V2EX 如何从 afs 上下载数据 - V2EX 如何使用代码获取两个 Namenode 的节点信息? - V2EX SQOOP 导出数据到 MYSQL 报错 - V2EX 请教, CDH 集群管理工具, centos 普通用户可以安装吗?还是必须使用 root 用户 - V2EX 关于 HDFS 小文件归档有什么好办法吗? - V2EX 请教 9 台机器的 hadoop 集群角色分配问题 - V2EX cloudera agent 启动失败 - V2EX MapReduce 应用在本地调试正常,集群上跑不动 - V2EX spark 的 shuffle 算子一定会产生宽依赖吗? - V2EX spark graphx 怎么实现类似 QQ 好友推荐功能? neo4j 一条语句实现 - V2EX 自建 5 个节点的 Hadoop 集群,以及完成 MapReduce 作业 - V2EX 请教 hadoop 配置文件中配置项的作用域 - V2EX yarn 可以监控 hadoop 或者 spark 的服务吗? - V2EX 有很多 xml 文件,如何按照文件去并行,而不是一个大文件切分成小块来做并行计算呢? - V2EX 大量 zip 压缩包,每一个都很小, 10M 以内,如何利用 MapReduce 实现快速解压呢? - V2EX 请教关于 HDFS DELEGATION TOKEN 过问题。 - V2EX [腾讯岗位] 大数据开发工程师(深圳) - V2EX Apache Kylin 在 left outer join 后为何不支持+-*/运算啊? - V2EX 美资电商 Coupang(韩国电商巨头)在上海办公室招 Chief Architect(大数据方向) - V2EX hadoop or spark 大数据去重(10 亿) - V2EX 请教个 hadoop 指令问题 - V2EX 请问这个 hadoop 指令是什么意思啊 - V2EX 想请教一下从 oozie 调用 hadoop 遇到的问题 - V2EX Hadoop security - V2EX 大家经常去哪些大数据的论坛或者网站学习呢? - V2EX
关于 Spark 读取预分区 Hbase 问题 - V2EX
Nirlan · 2018-09-28 · via Hadoop

--国庆净玩了,没有好好想这个问题.周一来了之后整理了一下思路,并参考(抄袭)了网上的一些实现,现在把完整的代码给贴一下. 附上参考的链接 http://www.zhyea.com/2017/06/21/visit-hbase-with-custom-spark-rdd.html

--感谢 4 楼的兄弟提供思路

提出这个问题主要是 Hbase 的 rowkey 设计为 B+ tree,Hbase 的 scan 操作性能极高.
在 Hbase 建表的时候,预分区是必要的,但是 Hbase 的数据插入分区的时候,又是和 rowkey 的初始几位密切相关

比如,我的 splitkeys 是 Array("0001|","002|","003|","004|","005|","006|","007|","008|")
我在生成 rowkey 的时候,rowkey 的前缀从上面这个数据里随机取一个,如 006|,那么与这个 rowkey 相关的数据一定会插入 start 006| end 007| 这个分区里,给 scan 操作带来很大便利.

但是随之产生的问题就是我主楼里提到的.以下代码解决了这个问题

具体的实现过程主要是两个类,一个重写了 RDD 的实现,一个用于从 hbase 拉取数据

--重写 RDD
class QueryRDD(sc: SparkContext, tableName: String, startRow: String, endRow: String, splitKeys: Array[String]) extends RDD[Map[String,String]](sc, Nil)
{

#重写该方法用于计算每一个 partition
override def compute(split: Partition, context: TaskContext): Iterator[Map[String,String]] =
{
val part = split.asInstanceOf[QueryPartition]
val results = query(part)
new InterruptibleIterator(context, results.iterator)
}

#重写该方法用于获取 partition
override protected def getPartitions: Array[Partition] =
{
val partitions = ArrayBuffer[Partition]()
for (splitKey <- splitKeys)
{
partitions += new QueryPartition(splitKey)
}
partitions.toArray
}

private def query(partition: QueryPartition) =
{
val splitKey = partition.split
val filter = null #该参数可以不为 null,即可在 scan 的同时进行 filter
val start = splitKey + startRow
val end = splitKey + endRow
HBaseClient.scan(tableName, filter, start, end)
}
}

#实现自己的 partition
class QueryPartition(splitKey: String) extends Partition
{
def split: String = splitKey

override def index: Int = splitKey.substring(0, 3).toInt

override def hashCode(): Int = index
}

以上是重写 RDD,hbase 的具体 scan 操作,在我上面的链接里可以找到,我照搬了过来.但是要注意他的 58 行,要把 startRow 改成 stopRow,不然的话其他代码写得再好都白费啦