Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 从Avro读取并在Mapper中写入多个HBase_Hadoop_Hbase_Avro - Fatal编程技术网

Hadoop 从Avro读取并在Mapper中写入多个HBase

Hadoop 从Avro读取并在Mapper中写入多个HBase,hadoop,hbase,avro,Hadoop,Hbase,Avro,我使用了MultiTableOutputFormat,并成功地在TableReducer中写入了多个HBase表。但是如何在Mapperonly作业中实现这一点呢 我尝试使用TableMapper,但它只有,没有。所以我无法读取文本文件 我的映射器正在读取Text/Avro文件,并在推送到HBase之前对其进行处理。这可能吗?您可以打开一个HBase连接,并将PUT操作自己写入您实施的映射器中。HBase连接创建是一项繁重的操作。这是否可能在映射程序之间共享HBase连接,以便重新利用连接实例?

我使用了
MultiTableOutputFormat
,并成功地在
TableReducer
中写入了多个HBase表。但是如何在
Mapper
only作业中实现这一点呢

我尝试使用
TableMapper
,但它只有
,没有
。所以我无法读取文本文件


我的映射器正在读取Text/Avro文件,并在推送到HBase之前对其进行处理。这可能吗?

您可以打开一个HBase连接,并将PUT操作自己写入您实施的映射器中。

HBase连接创建是一项繁重的操作。这是否可能在映射程序之间共享HBase连接,以便重新利用连接实例?因为每个映射程序都在其自己的JVM中运行(并且偶尔在同一台服务器上运行),所以答案是:每个映射程序都在其自己的JVM上运行是不正确的。我想,如果我序列化hbase连接对象并在驱动程序的
Configuration
类中对其进行设置,然后再次在mapper的
setup()
方法中对其进行反序列化以获得原始连接对象,那么就可以完成。这是一个很好的例子。连接不是可序列化的对象,因为它们实际上在特定IP和端口之间创建连接。您可以为每个映射器创建一次a连接(初始化时)确定。。谢谢@Arnon Rotem Gal Oz