首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Scala访问HBase的推荐方法

使用Scala访问HBase的推荐方法
EN

Stack Overflow用户
提问于 2018-05-18 17:20:41
回答 3查看 662关注 0票数 5

既然不再维护SpyGlass,那么使用Scala/烫伤访问HBase的推荐方法是什么呢?2013年,相似问题被问到了,但大多数建议的链接要么已经失效,要么已经失效。唯一似乎有用的链接是到Apache Flink。这被认为是当今最好的选择吗?人们是否仍然推荐SpyGlass作为新项目,即使它没有被维护?性能(大规模并行)和可测试性是优先考虑的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-23 10:06:29

取决于你所说的“推荐”是什么意思,我想。

DIY

鳗鱼

如果您只想从Scala应用程序中访问HBase上的数据,那么您可能想看看鳗鱼,它包括与大数据景观中的许多存储格式和系统交互的库,并且是用Scala编写的。

您很可能对使用eel-hbase模块感兴趣,该模块在几个版本中包括一个HBaseSource类(以及一个HBaseSink)。实际上,最近我注意到README仍然提到不支持HBase。在Hive中没有明确的示例,但是源和接收器以类似的方式工作。

风筝

另一种选择可能是风筝,它也有您可以从其中获得灵感的一组相当广泛的例子 (包括HBase),但是它看起来不像Eel那么活跃。

大数据框架

如果您想要一个框架来帮助您,而不是用库来酝酿您自己的解决方案。当然,你必须考虑一些学习曲线。

火花

Spark是一个相当成熟的项目,HBase项目本身是为Spark2.1.1(这里的Scaladocs)构建的连接器。这里是一个介绍性的演讲,可以帮助你。

一般的想法是,您可以按照这个例子中的建议使用这个自定义数据源。

代码语言:javascript
复制
sqlContext
  .read
  .options(Map(HBaseTableCatalog.tableCatalog->cat, HBaseRelation.HBASE_CONFIGFILE -> conf))
  .format("org.apache.spark.sql.execution.datasources.hbase")
  .load()

允许您通过Spark访问HBase数据。下面是一个简短的摘录来自同一个例子

代码语言:javascript
复制
val df1 = withCatalog(cat1, conf1)
val df2 = withCatalog(cat2, conf2)
val s1 = df1.filter($"col0" <= "row120" && $"col0" > "row090").select("col0", "col2")
val s2 = df2.filter($"col0" <= "row150" && $"col0" > "row100").select("col0", "col5")
val result =  s1.join(s2, Seq("col0"))

撇开性能方面的考虑,正如您可能看到的那样,这种语言对于数据操作来说是相当自然的。

弗林克

有两个答案已经涉及到Flink,所以我不会添加更多内容,除了在编写本报告(1.4.2)时来自最新稳定版本的指向示例的链接,您可能会对此感兴趣。

票数 1
EN

Stack Overflow用户

发布于 2018-05-19 05:37:03

根据我使用Flink Cassandra连接器编写数据Cassandra的经验,我认为最好的方法是使用Flink内置连接器。因为Flink 1.4.3,您可以使用HBase Flink连接器。请参阅这里

票数 2
EN

Stack Overflow用户

发布于 2018-05-22 10:56:09

我使用java连接到Flink中的HBase。只需在open中创建open连接对象,并在RichFunction的close方法(即RichSinkFunction)中关闭它。这些方法由每个flink时隙调用一次。

我认为在Scala中也可以这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50416406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档