既然不再维护spyglass,那么使用scala/Bolding访问hbase的建议方法是什么?2013年提出了一个类似的问题,但大多数建议的链接要么是死的,要么是与不存在的项目有关。唯一有用的链接是apache flink。这被认为是现在最好的选择吗?人们还在为新项目推荐spyglass吗,尽管它没有得到维护?性能(大规模并行)和可测试性是优先级。
gudnpqoy1#
我想这要看你说的“推荐”是什么意思了。
如果您只想从scala应用程序访问hbase上的数据,那么您可能需要看看eel,它包括与大数据环境中的许多存储格式和系统交互的库,并且是用scala本机编写的。您很可能对使用 eel-hbase 模块,其中包括 HBaseSource 类(以及 HBaseSink ). 实际上是最近的事,我刚注意到 README 仍然提到不支持hbase。对于hive没有明确的例子,但是源和汇的工作方式相似。
eel-hbase
HBaseSource
HBaseSink
README
另一个选择可能是kite,它也有一组非常广泛的例子,你可以从中获得灵感(包括hbase),但它看起来不像eel那么活跃。
如果你想要一个框架来帮助你,而不是用库来酝酿你自己的解决方案。当然,你必须考虑一些学习曲线。
spark是一个相当成熟的项目,hbase项目本身为spark2.1.1构建了一个连接器(这里是scaladocs)。这是一篇介绍性的演讲,可以对你有所帮助。总体思路是,您可以使用本例中建议的自定义数据源:
sqlContext .read .options(Map(HBaseTableCatalog.tableCatalog->cat, HBaseRelation.HBASE_CONFIGFILE -> conf)) .format("org.apache.spark.sql.execution.datasources.hbase") .load()
允许您通过spark sql api访问hbase数据。以下是同一示例的简短摘录:
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),您可能有兴趣看看。
9jyewag02#
根据我使用flink cassandra连接器编写数据cassandra的经验,我认为最好的方法是使用flink内置连接器。自从Flink 1.4.3 您可以使用hbase flink连接器。看到这里了吗
1.4.3
wfveoks03#
我使用java连接到flink中的hbase。只需在中创建hbase连接对象 open 把它关在里面 close richfunction方法(即richsinkfunction)。这些方法由每个flink槽调用一次。我想你在斯卡拉也可以这样做。
open
close
3条答案
按热度按时间gudnpqoy1#
我想这要看你说的“推荐”是什么意思了。
自己动手
鳗鱼
如果您只想从scala应用程序访问hbase上的数据,那么您可能需要看看eel,它包括与大数据环境中的许多存储格式和系统交互的库,并且是用scala本机编写的。
您很可能对使用
eel-hbase
模块,其中包括HBaseSource
类(以及HBaseSink
). 实际上是最近的事,我刚注意到README
仍然提到不支持hbase。对于hive没有明确的例子,但是源和汇的工作方式相似。风筝
另一个选择可能是kite,它也有一组非常广泛的例子,你可以从中获得灵感(包括hbase),但它看起来不像eel那么活跃。
大数据框架
如果你想要一个框架来帮助你,而不是用库来酝酿你自己的解决方案。当然,你必须考虑一些学习曲线。
Spark
spark是一个相当成熟的项目,hbase项目本身为spark2.1.1构建了一个连接器(这里是scaladocs)。这是一篇介绍性的演讲,可以对你有所帮助。
总体思路是,您可以使用本例中建议的自定义数据源:
允许您通过spark sql api访问hbase数据。以下是同一示例的简短摘录:
撇开性能因素不谈,您可能会看到,对于数据操作来说,这种语言感觉非常自然。
Flink
两个答案已经涉及到flink,所以我不会再补充更多,除了一个链接到一个例子,这个例子来自于撰写本文时最新的稳定版本(1.4.2),您可能有兴趣看看。
9jyewag02#
根据我使用flink cassandra连接器编写数据cassandra的经验,我认为最好的方法是使用flink内置连接器。自从Flink
1.4.3
您可以使用hbase flink连接器。看到这里了吗wfveoks03#
我使用java连接到flink中的hbase。只需在中创建hbase连接对象
open
把它关在里面close
richfunction方法(即richsinkfunction)。这些方法由每个flink槽调用一次。我想你在斯卡拉也可以这样做。